libpurple/protocols/yahoo/yahoo.c

Wed, 23 Jan 2008 23:28:38 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Wed, 23 Jan 2008 23:28:38 +0000
changeset 22277
7c386db62c81
parent 22225
6cd802a8c5ad
child 22359
64502566f95b
permissions
-rw-r--r--

Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds

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
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
64 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
65 yahoo_add_permit(PurpleConnection *gc, const char *who)
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
66 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
67 purple_debug_info("yahoo",
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
68 "Permitting ID %s local contact rights for account %s\n", who, gc->account);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
69 purple_privacy_permit_add(gc->account,who,TRUE);
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
70 }
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
71
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
72 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
73 yahoo_rem_permit(PurpleConnection *gc, const char *who)
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
74 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
75 purple_debug_info("yahoo",
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
76 "Denying ID %s local contact rights for account %s\n", who, gc->account);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
77 purple_privacy_permit_remove(gc->account,who,TRUE);
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
78 }
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
79
16527
aa95ba6a15d9 whitespace
Tim Ringenbach <marv@pidgin.im>
parents: 16007
diff changeset
80 gboolean
aa95ba6a15d9 whitespace
Tim Ringenbach <marv@pidgin.im>
parents: 16007
diff changeset
81 yahoo_privacy_check(PurpleConnection *gc, const char *who)
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
82 {
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
83 /* returns TRUE if allowed through, FALSE otherwise */
11111
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
84 gboolean permitted;
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
85
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
86 permitted = purple_privacy_check(gc->account, who);
11111
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
87
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
88 /* print some debug info */
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
89 if (!permitted) {
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
90 char *deb = NULL;
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
91 switch (gc->account->perm_deny)
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
92 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
93 case PURPLE_PRIVACY_DENY_ALL:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
94 deb = "PURPLE_PRIVACY_DENY_ALL";
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
95 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
96 case PURPLE_PRIVACY_DENY_USERS:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
97 deb = "PURPLE_PRIVACY_DENY_USERS";
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
98 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
99 case PURPLE_PRIVACY_ALLOW_BUDDYLIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
100 deb = "PURPLE_PRIVACY_ALLOW_BUDDYLIST";
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
101 break;
11111
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
102 }
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
103 if(deb)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
104 purple_debug_info("yahoo",
11111
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
105 "%s blocked data received from %s (%s)\n",
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
106 gc->account->username,who, deb);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
107 } else if (gc->account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
108 purple_debug_info("yahoo",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
109 "%s allowed data received from %s (PURPLE_PRIVACY_ALLOW_USERS)\n",
11111
4621d9b973a4 [gaim-migrate @ 13163]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11109
diff changeset
110 gc->account->username,who);
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
111 }
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
112
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
113 return permitted;
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
114 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
115
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
116 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
117 {
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
118 char *status = NULL;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
119
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
120 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
121 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
122
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
123 if (f->status == YAHOO_STATUS_OFFLINE)
11250
f541803353ed [gaim-migrate @ 13419]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11188
diff changeset
124 {
f541803353ed [gaim-migrate @ 13419]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11188
diff changeset
125 return;
f541803353ed [gaim-migrate @ 13419]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11188
diff changeset
126 }
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
127
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
128 switch (f->status) {
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
129 case YAHOO_STATUS_AVAILABLE:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
130 status = YAHOO_STATUS_TYPE_AVAILABLE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
131 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
132 case YAHOO_STATUS_BRB:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
133 status = YAHOO_STATUS_TYPE_BRB;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
134 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
135 case YAHOO_STATUS_BUSY:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
136 status = YAHOO_STATUS_TYPE_BUSY;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
137 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
138 case YAHOO_STATUS_NOTATHOME:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
139 status = YAHOO_STATUS_TYPE_NOTATHOME;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
140 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
141 case YAHOO_STATUS_NOTATDESK:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
142 status = YAHOO_STATUS_TYPE_NOTATDESK;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
143 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
144 case YAHOO_STATUS_NOTINOFFICE:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
145 status = YAHOO_STATUS_TYPE_NOTINOFFICE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
146 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
147 case YAHOO_STATUS_ONPHONE:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
148 status = YAHOO_STATUS_TYPE_ONPHONE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
149 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
150 case YAHOO_STATUS_ONVACATION:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
151 status = YAHOO_STATUS_TYPE_ONVACATION;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
152 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
153 case YAHOO_STATUS_OUTTOLUNCH:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
154 status = YAHOO_STATUS_TYPE_OUTTOLUNCH;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
155 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
156 case YAHOO_STATUS_STEPPEDOUT:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
157 status = YAHOO_STATUS_TYPE_STEPPEDOUT;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
158 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
159 case YAHOO_STATUS_INVISIBLE: /* this should never happen? */
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
160 status = YAHOO_STATUS_TYPE_INVISIBLE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
161 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
162 case YAHOO_STATUS_CUSTOM:
13688
240e5b90adb4 [gaim-migrate @ 16089]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13559
diff changeset
163 case YAHOO_STATUS_IDLE:
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
164 if (!f->away)
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
165 status = YAHOO_STATUS_TYPE_AVAILABLE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
166 else
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
167 status = YAHOO_STATUS_TYPE_AWAY;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
168 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
169 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
170 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
171 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
172 }
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
173
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
174 if (status) {
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
175 if (f->status == YAHOO_STATUS_CUSTOM)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
176 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
177 yahoo_friend_get_status_message(f), NULL);
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
178 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
179 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
180 }
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
181
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
182 if (f->idle != 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
183 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
184 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
185 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
186
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
187 if (f->sms)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
188 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
189 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
190 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
191 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
192
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
193 static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
194 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
195 PurpleAccount *account = purple_connection_get_account(gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 GSList *l = pkt->hash;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
198 YahooFriend *f = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
199 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
200 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
201 char *message = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
202
7892
227c27d0183d [gaim-migrate @ 8552]
Daniel Atallah <datallah@pidgin.im>
parents: 7883
diff changeset
203 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
204 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
205 purple_account_set_password(account, NULL);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
206 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
207 _("You have signed on from another location."));
7892
227c27d0183d [gaim-migrate @ 8552]
Daniel Atallah <datallah@pidgin.im>
parents: 7883
diff changeset
208 return;
227c27d0183d [gaim-migrate @ 8552]
Daniel Atallah <datallah@pidgin.im>
parents: 7883
diff changeset
209 }
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
210
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 switch (pair->key) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
215 case 0: /* we won't actually do anything with this */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
216 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217 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
218 if (!yd->logged_in) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
219 purple_connection_set_display_name(gc, pair->value);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
220 purple_connection_set_state(gc, PURPLE_CONNECTED);
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
221 yd->logged_in = TRUE;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
222 if (yd->picture_upload_todo) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
223 yahoo_buddy_icon_upload(gc, yd->picture_upload_todo);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
224 yd->picture_upload_todo = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
225 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
226 yahoo_set_status(account, purple_account_get_active_status(account));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
227
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
228 /* 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
229 *
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
230 * 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
231 * requested
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
232 *
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
233 * do_import(gc, NULL);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
234 * 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
235 * yahoo_packet_send_and_free(newpkt, yd);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
236 */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
237
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
238 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
239 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
240 case 8: /* how many online buddies we have */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
241 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
242 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
243 /* 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
244 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
245 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
246 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
247 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
248 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
249 }
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
250 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
251 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
252 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
253 name = pair->value;
9886
ea7433072a8f [gaim-migrate @ 10771]
Tim Ringenbach <marv@pidgin.im>
parents: 9835
diff changeset
254 f = yahoo_friend_find_or_new(gc, name);
9888
162a02f2ac9d [gaim-migrate @ 10773]
Dave Bell
parents: 9886
diff changeset
255 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
256 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
257 case 10: /* state */
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
258 if (!f)
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
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
261 f->status = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
262 if ((f->status >= YAHOO_STATUS_BRB) && (f->status <= YAHOO_STATUS_STEPPEDOUT))
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
263 f->away = 1;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
264 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
265 f->away = 0;
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
266
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
267 if (f->status == YAHOO_STATUS_IDLE) {
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
268 /* 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
269 if (f->idle == 0)
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
270 f->idle = time(NULL);
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
271 } else
6804
8247ddcbdf53 [gaim-migrate @ 7344]
Tim Ringenbach <marv@pidgin.im>
parents: 6796
diff changeset
272 f->idle = 0;
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
273
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
274 if (f->status != YAHOO_STATUS_CUSTOM)
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
275 yahoo_friend_set_status_message(f, NULL);
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
276
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
277 f->sms = 0;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 case 19: /* custom message */
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
280 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
281 message = pair->value;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
282 break;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
283 case 11: /* this is the buddy's session id */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
285 case 17: /* in chat? */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
286 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
287 case 47: /* is custom status away or not? 2=idle*/
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
288 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
289 break;
8441
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
290
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
291 /* I have no idea what it means when this is
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
292 * set when someone's available, but it doesn't
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
293 * mean idle. */
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
294 if (f->status == YAHOO_STATUS_AVAILABLE)
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
295 break;
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
296
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
297 f->away = strtol(pair->value, NULL, 10);
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
298 if (f->away == 2) {
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
299 /* 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
300 if (f->idle == 0)
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
301 f->idle = time(NULL);
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
302 }
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
303
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
304 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
305 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
306 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
307 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
308
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
309 if (f->idle)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
310 f->idle = -1;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
311 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
312 case 137: /* usually idle time in seconds, sometimes login time */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
313 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
314 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
315
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
316 if (f->status != YAHOO_STATUS_AVAILABLE)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
317 f->idle = time(NULL) - strtol(pair->value, NULL, 10);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
318 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
319 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
320 if (strtol(pair->value, NULL, 10) == 0) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
321 if (f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
322 f->status = YAHOO_STATUS_OFFLINE;
15589
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
323 if (name) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
324 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
325 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
326 }
2807
fe1ea0453890 [gaim-migrate @ 2820]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2805
diff changeset
327 break;
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
328 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
329 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
330 case 60: /* SMS */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
331 if (f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
332 f->sms = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
333 yahoo_update_status(gc, name, f);
2771
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
334 }
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
335 break;
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
336 case 197: /* Avatars */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
337 {
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
338 guchar *decoded;
11127
5e539d9d26a4 [gaim-migrate @ 13183]
Mark Doliner <markdoliner@pidgin.im>
parents: 11111
diff changeset
339 char *tmp;
5e539d9d26a4 [gaim-migrate @ 13183]
Mark Doliner <markdoliner@pidgin.im>
parents: 11111
diff changeset
340 gsize len;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
341
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
342 if (pair->value) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
343 decoded = purple_base64_decode(pair->value, &len);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
344 if (len) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
345 tmp = purple_str_binary_to_ascii(decoded, len);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
346 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
347 g_free(tmp);
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
348 }
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
349 g_free(decoded);
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
350 }
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
351 break;
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
352 }
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
353 case 192: /* Pictures, aka Buddy Icons, checksum */
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
354 {
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
355 /* 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
356 * FIXME: fix up the strtol() stuff if possible. */
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
357 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
358 const char *locksum = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
359 PurpleBuddy *b;
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
360
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
361 if (!name)
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
362 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
363
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
364 b = purple_find_buddy(gc->account, name);
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
365
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
366 if (!cksum || (cksum == -1)) {
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
367 if (f)
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
368 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
369 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
370 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
371 }
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
372
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
373 if (!f)
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
374 break;
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
375
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
376 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
377 if (b) {
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 17044
diff changeset
378 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
379 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
380 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
381 }
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
382
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
383 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
384 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2951
diff changeset
385 case 16: /* Custom error message */
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
386 {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
387 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
388 purple_notify_error(gc, NULL, tmp, NULL);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
389 g_free(tmp);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
390 }
2951
fa9b438bf678 [gaim-migrate @ 2964]
Rob Flynn <gaim@robflynn.com>
parents: 2918
diff changeset
391 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
392 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
393 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
394 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
395 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
396 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
397 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
398 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
399
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
401 purple_debug(PURPLE_DEBUG_ERROR, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
402 "Unknown status key %d\n", pair->key);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
404 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
406 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 }
10553
89697092b958 [gaim-migrate @ 11930]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
408
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
409 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
410 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
411
10553
89697092b958 [gaim-migrate @ 11930]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
412 if (name && f) /* update the last buddy */
89697092b958 [gaim-migrate @ 11930]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
413 yahoo_update_status(gc, name, f);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
415
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
416 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
417 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
418 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
419 PurpleGroup *g;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
420 GSList *list, *i;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
421 gboolean onlist = 0;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
422 char *oname = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
423 char **oname_p = &oname;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
424 GSList **list_p = &list;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
425
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
426 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
427 list = purple_find_buddies(account, name);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
428 else
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
429 g_hash_table_steal(ht, name);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
430
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
431 for (i = list; i; i = i->next) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
432 b = i->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
433 g = purple_buddy_get_group(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
434 if (!purple_utf8_strcasecmp(group, g->name)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
435 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
436 "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
437 list = g_slist_delete_link(list, i);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
438 onlist = 1;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
439 break;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
440 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
441 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
442
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
443 if (!onlist) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
444 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
445 "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
446 if (!(g = purple_find_group(group))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
447 g = purple_group_new(group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
448 purple_blist_add_group(g, NULL);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
449 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
450 b = purple_buddy_new(account, name, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
451 purple_blist_add_buddy(b, NULL, g, NULL);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
452 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
453
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
454 if (list) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
455 if (!oname)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
456 oname = g_strdup(purple_normalize(account, name));
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
457 g_hash_table_insert(ht, oname, list);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
458 } else if (oname)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
459 g_free(oname);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
460 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
461
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
462 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
463 {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
464 char *name = key;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
465 GSList *list = value, *i;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
466 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
467 PurpleGroup *g;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
468
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
469 for (i = list; i; i = i->next) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
470 b = i->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
471 g = purple_buddy_get_group(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
472 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
473 purple_blist_remove_buddy(b);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
474 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
475 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
476
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
477 static char *_getcookie(char *rawcookie)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
478 {
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
479 char *cookie = NULL;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
480 char *tmpcookie;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
481 char *cookieend;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
482
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
483 if (strlen(rawcookie) < 2)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
484 return NULL;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
485 tmpcookie = g_strdup(rawcookie+2);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
486 cookieend = strchr(tmpcookie, ';');
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
487
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
488 if (cookieend)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
489 *cookieend = '\0';
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
490
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
491 cookie = g_strdup(tmpcookie);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
492 g_free(tmpcookie);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
493
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
494 return cookie;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
495 }
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
496
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
497 static void yahoo_process_cookie(struct yahoo_data *yd, char *c)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
498 {
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
499 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
500 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
501 g_free(yd->cookie_y);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
502 yd->cookie_y = _getcookie(c);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
503 } 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
504 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
505 g_free(yd->cookie_t);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
506 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
507 } else
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
508 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
509 yd->cookies = g_slist_prepend(yd->cookies, g_strdup(c));
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
510 }
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
511
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
512 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
513 {
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
514 GSList *l = pkt->hash;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
515
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
516 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
517 struct yahoo_data *yd = gc->proto_data;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
518 GHashTable *ht;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
519 char *grp = NULL;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
520 char *norm_bud = NULL;
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
521 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
522 /* But what if you had no friends? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
523 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
524 PurpleGroup *g;
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
525
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
526
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
527 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
528
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
529 while (l) {
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
530 struct yahoo_pair *pair = l->data;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
531 l = l->next;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
532
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
533 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
534 case 302:
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
535 /* 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
536 * 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
537 * 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
538 * 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
539 */
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
540 if (pair->value && !strcmp(pair->value, "320")) {
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
541 /* No longer in any group; this indicates the start of the ignore list. */
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
542 g_free(grp);
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
543 grp = NULL;
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
544 }
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
545
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
546 break;
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
547 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
548 break;
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
549 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
550 break;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
551 case 65: /* This is the group */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
552 g_free(grp);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
553 grp = yahoo_string_decode(gc, pair->value, FALSE);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
554 break;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
555 case 7: /* buddy's s/n */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
556 g_free(norm_bud);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
557 norm_bud = g_strdup(purple_normalize(account, pair->value));
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
558
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
559 if (grp) {
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
560 /* This buddy is in a group */
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
561 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
562 if (!(b = purple_find_buddy(account, norm_bud))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
563 if (!(g = purple_find_group(grp))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
564 g = purple_group_new(grp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
565 purple_blist_add_group(g, NULL);
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
566 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
567 b = purple_buddy_new(account, norm_bud, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
568 purple_blist_add_buddy(b, NULL, g, NULL);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
569 }
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
570 yahoo_do_group_check(account, ht, norm_bud, grp);
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
571
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
572 } else {
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
573 /* This buddy is on the ignore list (and therefore in no group) */
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
574 purple_privacy_deny_add(account, norm_bud, 1);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
575 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
576 break;
14346
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
577 case 241: /* another protocol user */
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
578 if (f) {
14346
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
579 f->protocol = strtol(pair->value, NULL, 10);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
580 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
581 }
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
582 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
583 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
584 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
585 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
586 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
587 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
588 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
589 }
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
590 break;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
591 /* case 242: */ /* this seems related to 241 */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
592 /* break; */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
593 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
594 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
595
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
596 g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
597 g_hash_table_destroy(ht);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
598 g_free(grp);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
599 g_free(norm_bud);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
600 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
601
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
602 static void yahoo_process_list(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605 gboolean export = FALSE;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
606 gboolean got_serv_list = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
607 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
608 PurpleGroup *g;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
609 YahooFriend *f = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
610 PurpleAccount *account = purple_connection_get_account(gc);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
611 struct yahoo_data *yd = gc->proto_data;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
612 GHashTable *ht;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
613
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
614 char **lines;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
615 char **split;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
616 char **buddies;
7823
88f397380ed3 [gaim-migrate @ 8475]
Tim Ringenbach <marv@pidgin.im>
parents: 7771
diff changeset
617 char **tmp, **bud, *norm_bud;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
618 char *grp = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
619
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
620 if (pkt->id)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
621 yd->session_id = pkt->id;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
622
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
623 while (l) {
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
624 struct yahoo_pair *pair = l->data;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
625 l = l->next;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
626
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
627 switch (pair->key) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
628 case 87:
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
629 if (!yd->tmp_serv_blist)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
630 yd->tmp_serv_blist = g_string_new(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
631 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
632 g_string_append(yd->tmp_serv_blist, pair->value);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
633 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
634 case 88:
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
635 if (!yd->tmp_serv_ilist)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
636 yd->tmp_serv_ilist = g_string_new(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
637 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
638 g_string_append(yd->tmp_serv_ilist, pair->value);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
639 break;
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
640 case 59: /* cookies, yum */
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
641 yahoo_process_cookie(yd, pair->value);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
642 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
643 case YAHOO_SERVICE_PRESENCE_PERM:
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
644 if (!yd->tmp_serv_plist)
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
645 yd->tmp_serv_plist = g_string_new(pair->value);
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
646 else
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
647 g_string_append(yd->tmp_serv_plist, pair->value);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
648 break;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
649 }
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
650 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
651
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
652 if (pkt->status != 0)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
653 return;
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 if (yd->tmp_serv_blist) {
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
656 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
657
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
658 lines = g_strsplit(yd->tmp_serv_blist->str, "\n", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
659 for (tmp = lines; *tmp; tmp++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
660 split = g_strsplit(*tmp, ":", 2);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
661 if (!split)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
662 continue;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
663 if (!split[0] || !split[1]) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
664 g_strfreev(split);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
665 continue;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
666 }
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
667 grp = yahoo_string_decode(gc, split[0], FALSE);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
668 buddies = g_strsplit(split[1], ",", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
669 for (bud = buddies; bud && *bud; bud++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
670 norm_bud = g_strdup(purple_normalize(account, *bud));
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
671 f = yahoo_friend_find_or_new(gc, norm_bud);
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
672
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
673 if (!(b = purple_find_buddy(account, norm_bud))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
674 if (!(g = purple_find_group(grp))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
675 g = purple_group_new(grp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
676 purple_blist_add_group(g, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
677 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
678 b = purple_buddy_new(account, norm_bud, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
679 purple_blist_add_buddy(b, NULL, g, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
680 export = TRUE;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
681 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
682
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
683 yahoo_do_group_check(account, ht, norm_bud, grp);
7823
88f397380ed3 [gaim-migrate @ 8475]
Tim Ringenbach <marv@pidgin.im>
parents: 7771
diff changeset
684 g_free(norm_bud);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
685 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
686 g_strfreev(buddies);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
687 g_strfreev(split);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
688 g_free(grp);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
689 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
690 g_strfreev(lines);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
691
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
692 g_string_free(yd->tmp_serv_blist, TRUE);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
693 yd->tmp_serv_blist = NULL;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
694 g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
695 g_hash_table_destroy(ht);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
696 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
697
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
698 if (yd->tmp_serv_ilist) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
699 buddies = g_strsplit(yd->tmp_serv_ilist->str, ",", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
700 for (bud = buddies; bud && *bud; bud++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
701 /* The server is already ignoring the user */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
702 got_serv_list = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
703 purple_privacy_deny_add(gc->account, *bud, 1);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
704 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
705 g_strfreev(buddies);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
706
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
707 g_string_free(yd->tmp_serv_ilist, TRUE);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
708 yd->tmp_serv_ilist = NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
709 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
710
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
711 if (got_serv_list &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
712 ((gc->account->perm_deny != PURPLE_PRIVACY_ALLOW_BUDDYLIST) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
713 (gc->account->perm_deny != PURPLE_PRIVACY_DENY_ALL) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
714 (gc->account->perm_deny != PURPLE_PRIVACY_ALLOW_USERS)))
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
715 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
716 gc->account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
717 purple_debug_info("yahoo", "%s privacy defaulting to PURPLE_PRIVACY_DENY_USERS.\n",
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
718 gc->account->username);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
719 }
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
720
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
721 if (yd->tmp_serv_plist) {
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
722 buddies = g_strsplit(yd->tmp_serv_plist->str, ",", -1);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
723 for (bud = buddies; bud && *bud; bud++) {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
724 f = yahoo_friend_find(gc, *bud);
12138
fcf3d84824d7 [gaim-migrate @ 14439]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12088
diff changeset
725 if (f) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
726 purple_debug_info("yahoo", "%s setting presence for %s to PERM_OFFLINE\n",
12138
fcf3d84824d7 [gaim-migrate @ 14439]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12088
diff changeset
727 gc->account->username, *bud);
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
728 f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
12138
fcf3d84824d7 [gaim-migrate @ 14439]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12088
diff changeset
729 }
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
730 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
731 g_strfreev(buddies);
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
732 g_string_free(yd->tmp_serv_plist, TRUE);
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
733 yd->tmp_serv_plist = NULL;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
734
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
735 }
19058
9facc10e1c01 Yahoo server-side aliases patch from John Moody. Fixes #1653 Thanks!
Sean Egan <seanegan@pidgin.im>
parents: 19053
diff changeset
736 /* 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
737 yahoo_fetch_aliases(gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
738 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
739
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
740 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
741 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
742 char *msg = NULL;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
743 char *from = NULL;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
744 char *stat = NULL;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
745 char *game = NULL;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
746 YahooFriend *f = NULL;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
747 GSList *l = pkt->hash;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
748
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
749 while (l) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
750 struct yahoo_pair *pair = l->data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
751 if (pair->key == 4)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
752 from = pair->value;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
753 if (pair->key == 49)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
754 msg = pair->value;
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
755 if (pair->key == 13)
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
756 stat = pair->value;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
757 if (pair->key == 14)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
758 game = pair->value;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
759 l = l->next;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
760 }
3640
870c747e2117 [gaim-migrate @ 3763]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
761
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
762 if (!from || !msg)
3640
870c747e2117 [gaim-migrate @ 3763]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
763 return;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
764
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
765 if (!g_ascii_strncasecmp(msg, "TYPING", strlen("TYPING"))
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
766 && (yahoo_privacy_check(gc, from))) {
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
767 if (*stat == '1')
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
768 serv_got_typing(gc, from, 0, PURPLE_TYPING);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
769 else
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
770 serv_got_typing_stopped(gc, from);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4777
diff changeset
771 } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
772 PurpleBuddy *bud = purple_find_buddy(gc->account, from);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
773
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
774 if (!bud) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
775 purple_debug(PURPLE_DEBUG_WARNING, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
776 "%s is playing a game, and doesn't want "
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
777 "you to know.\n", from);
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
778 }
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
779
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
780 f = yahoo_friend_find(gc, from);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
781 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
782 return; /* if they're not on the list, don't bother */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
783
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
784 yahoo_friend_set_game(f, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
785
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
786 if (*stat == '1') {
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
787 yahoo_friend_set_game(f, game);
3020
121e08802117 [gaim-migrate @ 3033]
Sean Egan <seanegan@pidgin.im>
parents: 3019
diff changeset
788 if (bud)
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
789 yahoo_update_status(gc, from, f);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
790 }
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
791 } else if (!g_ascii_strncasecmp(msg, "WEBCAMINVITE", strlen("WEBCAMINVITE"))) {
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
792 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, from, gc->account);
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
793 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
794 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
795 g_free(buf);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
796 }
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
797
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
798 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
799
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
800
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
801 struct _yahoo_im {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
802 char *from;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
803 int time;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
804 int utf8;
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
805 int buddy_icon;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
806 char *msg;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
807 };
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
808
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
809 static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 {
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
811 struct yahoo_data *yd = gc->proto_data;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
812 GSList *l = pkt->hash;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
813 GSList *list = NULL;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
814 struct _yahoo_im *im = NULL;
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
815
13462
feff8b605383 [gaim-migrate @ 15836]
Daniel Atallah <datallah@pidgin.im>
parents: 13344
diff changeset
816 const char *imv = NULL;
6069
9f46466c89f8 [gaim-migrate @ 6519]
Luke Schierer <lschiere@pidgin.im>
parents: 6061
diff changeset
817
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
818 if (pkt->status <= 1 || pkt->status == 5) {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
819 while (l != NULL) {
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
820 struct yahoo_pair *pair = l->data;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
821 if (pair->key == 4) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
822 im = g_new0(struct _yahoo_im, 1);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
823 list = g_slist_append(list, im);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
824 im->from = pair->value;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
825 im->time = time(NULL);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
826 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
827 if (pair->key == 97)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
828 if (im)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
829 im->utf8 = strtol(pair->value, NULL, 10);
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
830 if (pair->key == 15)
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
831 if (im)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
832 im->time = strtol(pair->value, NULL, 10);
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
833 if (pair->key == 206)
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
834 if (im)
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
835 im->buddy_icon = strtol(pair->value, NULL, 10);
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
836 if (pair->key == 14) {
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
837 if (im)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
838 im->msg = pair->value;
6687
39462117d34d [gaim-migrate @ 7213]
Nandan Dixit
parents: 6686
diff changeset
839 }
11801
c19b37ac661b [gaim-migrate @ 14092]
Gary Kramlich <grim@reaperworld.com>
parents: 11800
diff changeset
840 /* IMV key */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
841 if (pair->key == 63)
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
842 {
13462
feff8b605383 [gaim-migrate @ 15836]
Daniel Atallah <datallah@pidgin.im>
parents: 13344
diff changeset
843 imv = pair->value;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
844 }
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
845 l = l->next;
6687
39462117d34d [gaim-migrate @ 7213]
Nandan Dixit
parents: 6686
diff changeset
846 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
847 } else if (pkt->status == 2) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
848 purple_notify_error(gc, NULL,
10386
6fcc45a26a16 [gaim-migrate @ 11612]
Daniel Atallah <datallah@pidgin.im>
parents: 10379
diff changeset
849 _("Your Yahoo! message did not get sent."), NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
850 }
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
851
13462
feff8b605383 [gaim-migrate @ 15836]
Daniel Atallah <datallah@pidgin.im>
parents: 13344
diff changeset
852 /** 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
853 /* Check for the Doodle IMV */
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
854 if (im != NULL && imv!= NULL && im->from != NULL)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
855 {
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
856 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
857
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
858 if (strstr(imv, "doodle;") != NULL)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
859 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
860 PurpleWhiteboard *wb;
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
861
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
862 if (!yahoo_privacy_check(gc, im->from)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
863 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
864 return;
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
865 }
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
866
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
867 /* 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
868
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
869 wb = purple_whiteboard_get_session(gc->account, im->from);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
870
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
871 /* If a Doodle session doesn't exist between this user */
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
872 if(wb == NULL)
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
873 {
20150
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
874 doodle_session *ds;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
875 wb = purple_whiteboard_create(gc->account, im->from, DOODLE_STATE_REQUESTED);
20150
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
876 ds = wb->proto_data;
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
877 ds->imv_key = g_strdup(imv);
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
878
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
879 yahoo_doodle_command_send_request(gc, im->from, imv);
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
880 yahoo_doodle_command_send_ready(gc, im->from, imv);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
881 }
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
882 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
883 }
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
884
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
885 for (l = list; l; l = l->next) {
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
886 YahooFriend *f;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
887 char *m, *m2;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
888 im = l->data;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
889
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
890 if (!im->from || !im->msg) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
891 g_free(im);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
892 continue;
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
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
895 if (!yahoo_privacy_check(gc, im->from)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
896 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
897 return;
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
898 }
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
899
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
900 m = yahoo_string_decode(gc, im->msg, im->utf8);
12994
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
901 /* This may actually not be necessary, but it appears
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
902 * that at least at one point some clients were sending
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
903 * "\r\n" as line delimiters, so we want to avoid double
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
904 * lines. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
905 m2 = purple_strreplace(m, "\r\n", "\n");
12994
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
906 g_free(m);
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
907 m = m2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
908 purple_util_chrreplace(m, '\r', '\n');
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
909
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
910 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
911 PurpleAccount *account;
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
912 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
913 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
914
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
915 account = purple_connection_get_account(gc);
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
916 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
917 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
918 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
919
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
920 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
921 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
922 g_free(username);
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
923 g_free(m);
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
924 g_free(im);
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
925 continue;
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
926 }
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
927
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
928 m2 = yahoo_codes_to_html(m);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
929 g_free(m);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
930 serv_got_im(gc, im->from, m2, 0, im->time);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
931 g_free(m2);
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
932
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
933 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
934 if (yahoo_friend_get_buddy_icon_need_request(f)) {
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9308
diff changeset
935 yahoo_send_picture_request(gc, im->from);
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
936 yahoo_friend_set_buddy_icon_need_request(f, FALSE);
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
937 }
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
938 }
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
939
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
940 g_free(im);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
941 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
942 g_slist_free(list);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
943 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
944
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
945 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
946 {
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
947 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
948 char *prim, *me = NULL, *msg = NULL;
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
949
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
950 while (l) {
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
951 struct yahoo_pair *pair = l->data;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
952
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
953 if (pair->key == 5)
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
954 me = pair->value;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
955 if (pair->key == 14)
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
956 msg = pair->value;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
957
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
958 l = l->next;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
959 }
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
960
10070
a0439e0afbb0 [gaim-migrate @ 11046]
Tim Ringenbach <marv@pidgin.im>
parents: 10009
diff changeset
961 if (!msg || !g_utf8_validate(msg, -1, NULL))
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
962 return;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
963
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
964 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
965 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
966 purple_notify_info(NULL, NULL, prim, msg);
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
967 g_free(prim);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
968 }
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
969
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
970 struct yahoo_add_request {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
971 PurpleConnection *gc;
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
972 char *id;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
973 char *who;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
974 int protocol;
11109
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
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
977 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
978 yahoo_buddy_add_authorize_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
979 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
980
22176
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
981 if (PURPLE_CONNECTION_IS_VALID(add_req->gc)) {
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
982 struct yahoo_packet *pkt;
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
983 struct yahoo_data *yd = add_req->gc->proto_data;
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
984
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
985 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, 0);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
986 yahoo_packet_hash(pkt, "ssiii",
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
987 1, add_req->id,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
988 5, add_req->who,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
989 241, add_req->protocol,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
990 13, 1,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
991 334, 0);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
992 yahoo_packet_send_and_free(pkt, yd);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
993 }
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
994
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
995 g_free(add_req->id);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
996 g_free(add_req->who);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
997 g_free(add_req);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
998 }
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
999
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1000 static void
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1001 yahoo_buddy_add_deny_cb(struct yahoo_add_request *add_req, const char *msg) {
22176
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1002
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1003 if (PURPLE_CONNECTION_IS_VALID(add_req->gc)) {
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1004 struct yahoo_data *yd = add_req->gc->proto_data;
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1005 struct yahoo_packet *pkt;
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1006 char *encoded_msg = NULL;
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1007 PurpleAccount *account = purple_connection_get_account(add_req->gc);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1008
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1009 if (msg && *msg)
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1010 encoded_msg = yahoo_string_encode(add_req->gc, msg, NULL);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1011
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1012 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1013 YAHOO_STATUS_AVAILABLE, 0);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1014
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1015 yahoo_packet_hash(pkt, "ssiiis",
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1016 1, purple_normalize(account, purple_account_get_username(account)),
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1017 5, add_req->who,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1018 13, 2,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1019 334, 0,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1020 97, 1,
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1021 14, encoded_msg ? encoded_msg : "");
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1022
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1023 yahoo_packet_send_and_free(pkt, yd);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1024
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1025 g_free(encoded_msg);
d893d4c42706 Fix a crash when accepting/denying a yahoo auth. request when the account is disconnected. References #4581
Daniel Atallah <datallah@pidgin.im>
parents: 21918
diff changeset
1026 }
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1027
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1028 g_free(add_req->id);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1029 g_free(add_req->who);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1030 g_free(add_req);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1031 }
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1032
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1033 static void
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1034 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
1035 {
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1036 yahoo_buddy_add_deny_cb(add_req, NULL);
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1037 }
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1038
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1039 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
1040 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
1041 struct yahoo_add_request *add_req = data;
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1042 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
1043 NULL, _("No reason given."), TRUE, FALSE, NULL,
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1044 _("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
1045 _("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
1046 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
1047 add_req);
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1048 }
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1049
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1050 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
1051 {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1052 char *notify_msg;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1053 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
1054
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1055 if (who == NULL)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1056 return;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1057
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1058 if (reason != NULL) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1059 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
1060 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
1061 g_free(msg2);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1062 } else
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1063 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
1064
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1065 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
1066 g_free(notify_msg);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1067
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1068 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
1069 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
1070 /* 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
1071 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1072
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1073 static void yahoo_buddy_auth_req_15(PurpleConnection *gc, 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
1074 GSList *l = pkt->hash;
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1075 const char *msg = NULL;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1076
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1077 /* Buddy authorized/declined our addition */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1078 if (pkt->status == 1) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1079 const char *who = NULL;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1080 int response = 0;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1081
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1082 while (l) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1083 struct yahoo_pair *pair = l->data;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1084
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1085 switch (pair->key) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1086 case 4:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1087 who = 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 case 13:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1090 response = strtol(pair->value, NULL, 10);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1091 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1092 case 14:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1093 msg = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1094 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1095 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1096 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
1097 }
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1098
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1099 if (response == 1) /* Authorized */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1100 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
1101 else if (response == 2) { /* Declined */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1102 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
1103 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
1104 } else
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1105 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
1106
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1107 }
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1108 /* Buddy requested authorization to add us. */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1109 else if (pkt->status == 3) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1110 struct yahoo_add_request *add_req;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1111 const char *firstname = NULL, *lastname = NULL;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1112
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1113 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
1114 add_req->gc = gc;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1115
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1116 while (l) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1117 struct yahoo_pair *pair = l->data;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1118
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1119 switch (pair->key) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1120 case 4:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1121 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
1122 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1123 case 5:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1124 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
1125 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1126 case 14:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1127 msg = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1128 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1129 case 216:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1130 firstname = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1131 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1132 case 241:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1133 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
1134 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1135 case 254:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1136 lastname = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1137 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1138
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1139 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1140 l = l->next;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1141 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1142
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
1143 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
1144 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
1145
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
1146 if (!yahoo_privacy_check(gc, 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
1147 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
1148 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
1149 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
1150 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
1151 }
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
1152
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1153 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
1154 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
1155
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1156 if (firstname && lastname)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1157 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
1158 else if (firstname)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1159 alias = g_strdup(firstname);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1160 else if (lastname)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1161 alias = g_strdup(lastname);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1162
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1163 /* 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
1164 * 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
1165 */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1166 purple_account_request_authorization(purple_connection_get_account(gc), add_req->who, add_req->id,
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 alias, dec_msg, purple_find_buddy(purple_connection_get_account(gc), add_req->who) != NULL,
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1168 yahoo_buddy_add_authorize_cb,
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1169 yahoo_buddy_add_deny_reason_cb,
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1170 add_req);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1171 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
1172 g_free(dec_msg);
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1173 } else {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1174 g_free(add_req->id);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1175 g_free(add_req->who);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1176 g_free(add_req);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1177 }
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1178 } else {
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1179 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
1180 }
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1181 }
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1182
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
1183 /* 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
1184 static void yahoo_buddy_added_us(PurpleConnection *gc, struct yahoo_packet *pkt) {
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1185 struct yahoo_add_request *add_req;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1186 char *msg = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1189 add_req = g_new0(struct yahoo_add_request, 1);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1190 add_req->gc = gc;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1191
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1193 struct yahoo_pair *pair = l->data;
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 switch (pair->key) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1196 case 1:
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1197 add_req->id = g_strdup(pair->value);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1198 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1199 case 3:
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1200 add_req->who = g_strdup(pair->value);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1201 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1202 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
1203 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1204 case 14:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205 msg = pair->value;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1206 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1207 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1208 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1209 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210
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
1211 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
1212 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
1213
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
1214 if (!yahoo_privacy_check(gc, 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
1215 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
1216 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
1217 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
1218 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
1219 }
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
1220
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
1221 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
1222 dec_msg = yahoo_string_decode(gc, msg, FALSE);
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1223
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1224 /* 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
1225 * this should probably be moved to the core.
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1226 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1227 purple_account_request_authorization(purple_connection_get_account(gc), add_req->who, add_req->id,
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
1228 NULL, dec_msg, purple_find_buddy(purple_connection_get_account(gc),add_req->who) != NULL,
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
1229 yahoo_buddy_add_authorize_cb,
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
1230 yahoo_buddy_add_deny_reason_cb,
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1231 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
1232 g_free(dec_msg);
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1233 } else {
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1234 g_free(add_req->id);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1235 g_free(add_req->who);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1236 g_free(add_req);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
1237 }
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1238 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1239
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1240 /* 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
1241 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
1242 {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1243 char *who = NULL;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1244 char *msg = NULL;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1245 GSList *l = pkt->hash;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1246
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1247 while (l) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1248 struct yahoo_pair *pair = l->data;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1249
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1250 switch (pair->key) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1251 case 3:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1252 who = pair->value;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1253 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1254 case 14:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1255 msg = pair->value;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1256 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1257 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1258 l = l->next;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1259 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1260
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1261 yahoo_buddy_denied_our_add(gc, who, msg);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1262 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1263
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1264 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
1265 {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1266 switch (pkt->status) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1267 case 1:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1268 yahoo_process_status(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1269 return;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1270 case 3:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1271 yahoo_buddy_added_us(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1272 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1273 case 7:
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1274 yahoo_buddy_denied_our_add_old(gc, pkt);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1275 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1276 default:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1277 break;
2683
06507dfdd96c [gaim-migrate @ 2696]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2682
diff changeset
1278 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1280
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1281 #define OUT_CHARSET "utf-8"
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1282
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1283 static char *yahoo_decode(const char *text)
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1284 {
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1285 char *converted = NULL;
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1286 char *n, *new;
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1287 const char *end, *p;
8616
def20c824c3a [gaim-migrate @ 9367]
Ethan Blanton <elb@pidgin.im>
parents: 8591
diff changeset
1288 int i, k;
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1289
7771
2630e726f818 [gaim-migrate @ 8416]
Nathan Walp <nwalp@pidgin.im>
parents: 7747
diff changeset
1290 n = new = g_malloc(strlen (text) + 1);
8118
7f5315bb4506 [gaim-migrate @ 8822]
Douglas Thrift <douglas@douglasthrift.net>
parents: 8113
diff changeset
1291 end = text + strlen(text);
7f5315bb4506 [gaim-migrate @ 8822]
Douglas Thrift <douglas@douglasthrift.net>
parents: 8113
diff changeset
1292
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1293 for (p = text; p < end; p++, n++) {
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1294 if (*p == '\\') {
9064
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1295 if (p[1] >= '0' && p[1] <= '7') {
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1296 p += 1;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1297 for (i = 0, k = 0; k < 3; k += 1) {
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1298 char c = p[k];
9065
0342389f745c [gaim-migrate @ 9841]
Tim Ringenbach <marv@pidgin.im>
parents: 9064
diff changeset
1299 if (c < '0' || c > '7') break;
9064
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1300 i *= 8;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1301 i += c - '0';
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1302 }
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1303 *n = i;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1304 p += k - 1;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1305 } else { /* bug 959248 */
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1306 /* If we see a \ not followed by an octal number,
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1307 * it means that it is actually a \\ with one \
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1308 * already eaten by some unknown function.
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1309 * This is arguably broken.
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1310 *
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1311 * I think wing is wrong here, there is no function
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1312 * called that I see that could have done it. I guess
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1313 * it is just really sending single \'s. That's yahoo
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1314 * for you.
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1315 */
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1316 *n = *p;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1317 }
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1318 }
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1319 else
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1320 *n = *p;
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1321 }
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1322
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1323 *n = '\0';
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1324
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1325 if (strstr(text, "\033$B"))
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1326 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
1327 if (!converted)
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1328 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
1329 g_free(new);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1330
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1331 return converted;
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1332 }
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1333
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1334 static void yahoo_process_mail(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1335 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1336 PurpleAccount *account = purple_connection_get_account(gc);
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1337 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
1338 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
1339 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
1340 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
1341 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
1342 int count = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1343 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1344
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1345 if (!purple_account_get_check_mail(account))
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1346 return;
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1347
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1348 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1349 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1350 if (pair->key == 9)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1351 count = strtol(pair->value, NULL, 10);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1352 else if (pair->key == 43)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1353 who = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1354 else if (pair->key == 42)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1355 email = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1356 else if (pair->key == 18)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1357 subj = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1359 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360
4001
ec3725a49136 [gaim-migrate @ 4201]
Luke Schierer <lschiere@pidgin.im>
parents: 3996
diff changeset
1361 if (who && subj && email && *email) {
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1362 char *dec_who = yahoo_decode(who);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1363 char *dec_subj = yahoo_decode(subj);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1364 char *from = g_strdup_printf("%s (%s)", dec_who, email);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1365
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1366 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
1367 yahoo_mail_url, NULL, NULL);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1368
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1369 g_free(dec_who);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1370 g_free(dec_subj);
2850
783e46199cb4 [gaim-migrate @ 2863]
abiligiri
parents: 2813
diff changeset
1371 g_free(from);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1372 } else if (count > 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1373 const char *to = purple_account_get_username(account);
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1374 const char *url = yahoo_mail_url;
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1375
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1376 purple_notify_emails(gc, count, FALSE, NULL, NULL, &to, &url,
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1377 NULL, NULL);
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1378 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1379 }
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1380 /* 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
1381 static const char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1382
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1383 /* 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
1384 * 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
1385 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
1386 /* 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
1387 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1388 for (; inlen >= 3; inlen -= 3)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1389 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1390 *out++ = base64digits[in[0] >> 2];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1391 *out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1392 *out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1393 *out++ = base64digits[in[2] & 0x3f];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1394 in += 3;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1395 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1396 if (inlen > 0)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1397 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1398 unsigned char fragment;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1399
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1400 *out++ = base64digits[in[0] >> 2];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1401 fragment = (in[0] << 4) & 0x30;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1402 if (inlen > 1)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1403 fragment |= in[1] >> 4;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1404 *out++ = base64digits[fragment];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1405 *out++ = (inlen < 2) ? '-' : base64digits[(in[1] << 2) & 0x3c];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1406 *out++ = '-';
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1407 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1408 *out = '\0';
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1409 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1410
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1411 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
1412 {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1413 struct yahoo_packet *pack;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1414 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1415 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
1416 const char *pass = purple_connection_get_password(gc);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1417 struct yahoo_data *yd = gc->proto_data;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1418
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1419 /* 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
1420 * will soon do so in the rest of the world.
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1421 *
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1422 * 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
1423 * 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
1424 * 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
1425 * party clients from connecting to their servers.
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1426 *
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1427 * Sorry, Yahoo.
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1428 */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1429
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1430 PurpleCipher *cipher;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1431 PurpleCipherContext *context;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
1432 guchar digest[16];
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1433
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1434 char *crypt_result;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1435 char password_hash[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1436 char crypt_hash[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1437 char *hash_string_p = g_malloc(50 + strlen(name));
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1438 char *hash_string_c = g_malloc(50 + strlen(name));
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1439
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1440 char checksum;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1441
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1442 int sv;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1443
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1444 char result6[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1445 char result96[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1446
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1447 sv = seed[15];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1448 sv = sv % 8;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1449
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1450 cipher = purple_ciphers_find_cipher("md5");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1451 context = purple_cipher_context_new(cipher, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1452
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1453 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
1454 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1455
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1456 to_y64(password_hash, digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1457
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1458 crypt_result = yahoo_crypt(pass, "$1$_2S43d5f$");
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1459
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1460 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1461 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
1462 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1463 to_y64(crypt_hash, digest, 16);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1464
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1465 switch (sv) {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1466 case 1:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1467 case 6:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1468 checksum = seed[seed[9] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1469 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1470 "%c%s%s%s", checksum, name, seed, password_hash);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1471 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1472 "%c%s%s%s", checksum, name, seed, crypt_hash);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1473 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1474 case 2:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1475 case 7:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1476 checksum = seed[seed[15] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1477 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1478 "%c%s%s%s", checksum, seed, password_hash, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1479 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1480 "%c%s%s%s", checksum, seed, crypt_hash, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1481 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1482 case 3:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1483 checksum = seed[seed[1] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1484 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1485 "%c%s%s%s", checksum, name, password_hash, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1486 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1487 "%c%s%s%s", checksum, name, crypt_hash, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1488 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1489 case 4:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1490 checksum = seed[seed[3] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1491 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1492 "%c%s%s%s", checksum, password_hash, seed, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1493 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1494 "%c%s%s%s", checksum, crypt_hash, seed, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1495 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1496 case 0:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1497 case 5:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1498 checksum = seed[seed[7] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1499 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1500 "%c%s%s%s", checksum, password_hash, name, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1501 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1502 "%c%s%s%s", checksum, crypt_hash, name, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1503 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1504 }
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1505
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1506 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1507 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
1508 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1509 to_y64(result6, digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1510
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1511 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1512 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
1513 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
1514 purple_cipher_context_destroy(context);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1515 to_y64(result96, digest, 16);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1516
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1517 pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, YAHOO_STATUS_AVAILABLE, 0);
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1518 yahoo_packet_hash(pack, "ssssss",
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1519 0, name,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1520 6, result6,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1521 96, result96,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1522 1, name,
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1523 244, YAHOO_CLIENT_VERSION_ID,
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1524 135, YAHOO_CLIENT_VERSION);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
1525 yahoo_packet_send_and_free(pack, yd);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1526
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1527 g_free(hash_string_p);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1528 g_free(hash_string_c);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1529 }
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1530
6998
5a4cd00736ce [gaim-migrate @ 7554]
Sean Egan <seanegan@pidgin.im>
parents: 6989
diff changeset
1531 /* 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
1532 * and sending the fix! Thanks guys. */
5a4cd00736ce [gaim-migrate @ 7554]
Sean Egan <seanegan@pidgin.im>
parents: 6989
diff changeset
1533
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1534 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
1535 {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1536 struct yahoo_packet *pack = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1537 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1538 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
1539 const char *pass = purple_connection_get_password(gc);
14108
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1540 char *enc_pass;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1541 struct yahoo_data *yd = gc->proto_data;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1542
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1543 PurpleCipher *md5_cipher;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1544 PurpleCipherContext *md5_ctx;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
1545 guchar md5_digest[16];
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1546
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1547 PurpleCipher *sha1_cipher;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1548 PurpleCipherContext *sha1_ctx1;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1549 PurpleCipherContext *sha1_ctx2;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1550
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1551 char *alphabet1 = "FBZDWAGHrJTLMNOPpRSKUVEXYChImkwQ";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1552 char *alphabet2 = "F0E1D2C3B4A59687abcdefghijklmnop";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1553
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1554 char *challenge_lookup = "qzec2tb3um1olpar8whx4dfgijknsvy5";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1555 char *operand_lookup = "+|&%/*^-";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1556 char *delimit_lookup = ",;";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1557
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1558 char *password_hash = (char *)g_malloc(25);
22205
ab8b50837917 Fix my typo
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22204
diff changeset
1559 char *crypt_hash = (char *)g_malloc(25);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1560 char *crypt_result = NULL;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1561
11144
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1562 unsigned char pass_hash_xor1[64];
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1563 unsigned char pass_hash_xor2[64];
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1564 unsigned char crypt_hash_xor1[64];
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1565 unsigned char crypt_hash_xor2[64];
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1566 char resp_6[100];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1567 char resp_96[100];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1568
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1569 unsigned char digest1[20];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1570 unsigned char digest2[20];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1571 unsigned char comparison_src[20];
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1572 unsigned char magic_key_char[4];
11144
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1573 const char *magic_ptr;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1574
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1575 unsigned int magic[64];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1576 unsigned int magic_work = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1577 unsigned int magic_4 = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1578
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1579 int x;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1580 int y;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1581 int cnt = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1582 int magic_cnt = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1583 int magic_len;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1584
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1585 memset(password_hash, 0, 25);
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1586 memset(crypt_hash, 0, 25);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1587 memset(&pass_hash_xor1, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1588 memset(&pass_hash_xor2, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1589 memset(&crypt_hash_xor1, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1590 memset(&crypt_hash_xor2, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1591 memset(&digest1, 0, 20);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1592 memset(&digest2, 0, 20);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1593 memset(&magic, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1594 memset(&resp_6, 0, 100);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1595 memset(&resp_96, 0, 100);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1596 memset(&magic_key_char, 0, 4);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1597 memset(&comparison_src, 0, 20);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1598
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1599 md5_cipher = purple_ciphers_find_cipher("md5");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1600 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
1601
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1602 sha1_cipher = purple_ciphers_find_cipher("sha1");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1603 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
1604 sha1_ctx2 = purple_cipher_context_new(sha1_cipher, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1605
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1606 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1607 * 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
1608 * 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
1609 */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1610
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1611 magic_ptr = seed;
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
1612
22206
bb119c007a45 Fix a couple compile warnings.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22205
diff changeset
1613 while (*magic_ptr != '\0') {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1614 char *loc;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1615
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1616 /* Ignore parentheses. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1617
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1618 if (*magic_ptr == '(' || *magic_ptr == ')') {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1619 magic_ptr++;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1620 continue;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1621 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1622
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1623 /* Characters and digits verify against the challenge lookup. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1624
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1625 if (isalpha(*magic_ptr) || isdigit(*magic_ptr)) {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1626 loc = strchr(challenge_lookup, *magic_ptr);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1627 if (!loc) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1628 /* SME XXX Error - disconnect here */
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1629 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1630
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1631 /* Get offset into lookup table and shl 3. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1632
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1633 magic_work = loc - challenge_lookup;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1634 magic_work <<= 3;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1635
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1636 magic_ptr++;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1637 continue;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1638 } else {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1639 unsigned int local_store;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1640
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1641 loc = strchr(operand_lookup, *magic_ptr);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1642 if (!loc) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1643 /* SME XXX Disconnect */
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1644 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1645
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1646 local_store = loc - operand_lookup;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1647
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1648 /* Oops; how did this happen? */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1649
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1650 if (magic_cnt >= 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1651 break;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1652
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1653 magic[magic_cnt++] = magic_work | local_store;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1654 magic_ptr++;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1655 continue;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1656 }
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1657 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1658
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1659 magic_len = magic_cnt;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1660 magic_cnt = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1661
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1662 /* Magic: Phase 2. Take generated magic value and sprinkle fairy
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1663 * dust on the values.
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1664 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1665
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1666 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
1667 unsigned char byte1;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1668 unsigned char byte2;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1669
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1670 /* Bad. Abort. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1671
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1672 if ((magic_cnt + 1 > magic_len) || (magic_cnt > magic_len))
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1673 break;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1674
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1675 byte1 = magic[magic_cnt];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1676 byte2 = magic[magic_cnt+1];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1677
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1678 byte1 *= 0xcd;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1679 byte1 ^= byte2;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1680
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1681 magic[magic_cnt+1] = byte1;
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1682 }
11077
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 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1685 * 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
1686 * 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
1687 * 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
1688 * 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
1689 *
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1690 * %-)
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1691 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1692
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1693 magic_cnt = 1;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1694 x = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1695
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1696 do {
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1697 unsigned int bl = 0;
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1698 unsigned int cl = magic[magic_cnt++];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1699
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1700 if (magic_cnt >= magic_len)
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1701 break;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1702
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1703 if (cl > 0x7F) {
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1704 if (cl < 0xe0)
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1705 bl = cl = (cl & 0x1f) << 6;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1706 else {
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1707 bl = magic[magic_cnt++];
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1708 cl = (cl & 0x0f) << 6;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1709 bl = ((bl & 0x3f) + cl) << 6;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1710 }
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1711
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1712 cl = magic[magic_cnt++];
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1713 bl = (cl & 0x3f) + bl;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1714 } else
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1715 bl = cl;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1716
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1717 comparison_src[x++] = (bl & 0xff00) >> 8;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1718 comparison_src[x++] = bl & 0xff;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1719 } while (x < 20);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1720
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1721 /* First four bytes are magic key. */
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1722 memcpy(&magic_key_char[0], comparison_src, 4);
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1723 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
1724 (magic_key_char[2] << 16) | (magic_key_char[3] << 24);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1725
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1726 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1727 * 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
1728 * loop values until we match our previous buffer.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1729 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1730 for (x = 0; x < 65535; x++) {
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1731 int leave = 0;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1732
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1733 for (y = 0; y < 5; y++) {
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1734 unsigned char test[3];
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1735
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1736 /* Calculate buffer. */
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1737 test[0] = x;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1738 test[1] = x >> 8;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1739 test[2] = y;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1740
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1741 purple_cipher_context_reset(md5_ctx, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1742 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
1743 purple_cipher_context_append(md5_ctx, test, 3);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1744 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest),
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1745 md5_digest, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1746
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1747 if (!memcmp(md5_digest, comparison_src+4, 16)) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1748 leave = 1;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1749 break;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1750 }
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1751 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1752
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1753 if (leave == 1)
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1754 break;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1755 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1756
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1757 /* If y != 0, we need some help. */
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1758 if (y != 0) {
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1759 unsigned int updated_key;
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1760
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1761 /* Update magic stuff.
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1762 * 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
1763 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1764 updated_key = yahoo_auth_finalCountdown(magic_4, 0x60, y, x);
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1765 updated_key = yahoo_auth_finalCountdown(updated_key, 0x60, y, x);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1766
8482
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1767 magic_key_char[0] = updated_key & 0xff;
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1768 magic_key_char[1] = (updated_key >> 8) & 0xff;
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1769 magic_key_char[2] = (updated_key >> 16) & 0xff;
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1770 magic_key_char[3] = (updated_key >> 24) & 0xff;
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
14108
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1773 enc_pass = yahoo_string_encode(gc, pass, NULL);
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1774
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1775 /* 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
1776 purple_cipher_context_reset(md5_ctx, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1777 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
1778 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest),
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1779 md5_digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1780 to_y64(password_hash, md5_digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1781
14108
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1782 crypt_result = yahoo_crypt(enc_pass, "$1$_2S43d5f$");
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1783
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1784 g_free(enc_pass);
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1785 enc_pass = NULL;
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1786
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1787 purple_cipher_context_reset(md5_ctx, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1788 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
1789 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest),
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1790 md5_digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1791 to_y64(crypt_hash, md5_digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1792
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1793 /* 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
1794 for (x = 0; x < (int)strlen(password_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1795 pass_hash_xor1[cnt++] = password_hash[x] ^ 0x36;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1796
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1797 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1798 memset(&(pass_hash_xor1[cnt]), 0x36, 64-cnt);
8349
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 cnt = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1801
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1802 for (x = 0; x < (int)strlen(password_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1803 pass_hash_xor2[cnt++] = password_hash[x] ^ 0x5c;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1804
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1805 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1806 memset(&(pass_hash_xor2[cnt]), 0x5c, 64-cnt);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1807
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1808 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1809 * 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
1810 * which we previously extrapolated from our challenge.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1811 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1812
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1813 purple_cipher_context_append(sha1_ctx1, pass_hash_xor1, 64);
9382
d05b4c47758d [gaim-migrate @ 10190]
Sean Egan <seanegan@pidgin.im>
parents: 9376
diff changeset
1814 if (y >= 3)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1815 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
1816 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
1817 purple_cipher_context_digest(sha1_ctx1, sizeof(digest1), digest1, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1818
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1819 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1820 * 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
1821 * of the first context.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1822 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1823
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1824 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
1825 purple_cipher_context_append(sha1_ctx2, digest1, 20);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1826 purple_cipher_context_digest(sha1_ctx2, sizeof(digest2), digest2, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1827
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1828 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1829 * 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
1830 * our first authentication response.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1831 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1832
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1833 for (x = 0; x < 20; x += 2) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1834 unsigned int val = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1835 unsigned int lookup = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1836
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1837 char byte[6];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1838
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1839 memset(&byte, 0, 6);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1840
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1841 /* First two bytes of digest stuffed together. */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1842
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1843 val = digest2[x];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1844 val <<= 8;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1845 val += digest2[x+1];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1846
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1847 lookup = (val >> 0x0b);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1848 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1849 if (lookup >= strlen(alphabet1))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1850 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1851 sprintf(byte, "%c", alphabet1[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1852 strcat(resp_6, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1853 strcat(resp_6, "=");
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 lookup = (val >> 0x06);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1856 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1857 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1858 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1859 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1860 strcat(resp_6, byte);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1861
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1862 lookup = (val >> 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1863 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1864 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1865 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1866 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1867 strcat(resp_6, byte);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1868
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1869 lookup = (val & 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1870 if (lookup >= strlen(delimit_lookup))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1871 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1872 sprintf(byte, "%c", delimit_lookup[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1873 strcat(resp_6, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1874 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1875
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1876 /* 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
1877
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1878 cnt = 0;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1879 memset(&digest1, 0, 20);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1880 memset(&digest2, 0, 20);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1881
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1882 for (x = 0; x < (int)strlen(crypt_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1883 crypt_hash_xor1[cnt++] = crypt_hash[x] ^ 0x36;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1884
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1885 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1886 memset(&(crypt_hash_xor1[cnt]), 0x36, 64-cnt);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1887
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1888 cnt = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1889
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1890 for (x = 0; x < (int)strlen(crypt_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1891 crypt_hash_xor2[cnt++] = crypt_hash[x] ^ 0x5c;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1892
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1893 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1894 memset(&(crypt_hash_xor2[cnt]), 0x5c, 64-cnt);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1895
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1896 purple_cipher_context_reset(sha1_ctx1, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1897 purple_cipher_context_reset(sha1_ctx2, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1898
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1899 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1900 * 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
1901 * which we previously extrapolated from our challenge.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1902 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1903
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1904 purple_cipher_context_append(sha1_ctx1, crypt_hash_xor1, 64);
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1905 if (y >= 3) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1906 purple_cipher_context_set_option(sha1_ctx1, "sizeLo",
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1907 GINT_TO_POINTER(0x1ff));
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1908 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1909 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
1910 purple_cipher_context_digest(sha1_ctx1, sizeof(digest1), digest1, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1911
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1912 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1913 * 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
1914 * of the first context.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1915 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1916
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1917 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
1918 purple_cipher_context_append(sha1_ctx2, digest1, 20);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1919 purple_cipher_context_digest(sha1_ctx2, sizeof(digest2), digest2, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1920
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1921 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1922 * 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
1923 * our first authentication response.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1924 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1925
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1926 for (x = 0; x < 20; x += 2) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1927 unsigned int val = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1928 unsigned int lookup = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1929
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1930 char byte[6];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1931
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1932 memset(&byte, 0, 6);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1933
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1934 /* First two bytes of digest stuffed together. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1935
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1936 val = digest2[x];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1937 val <<= 8;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1938 val += digest2[x+1];
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1939
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1940 lookup = (val >> 0x0b);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1941 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1942 if (lookup >= strlen(alphabet1))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1943 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1944 sprintf(byte, "%c", alphabet1[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1945 strcat(resp_96, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1946 strcat(resp_96, "=");
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1947
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1948 lookup = (val >> 0x06);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1949 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1950 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1951 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1952 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1953 strcat(resp_96, byte);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1954
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1955 lookup = (val >> 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1956 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1957 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1958 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1959 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1960 strcat(resp_96, byte);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1961
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1962 lookup = (val & 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1963 if (lookup >= strlen(delimit_lookup))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1964 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1965 sprintf(byte, "%c", delimit_lookup[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1966 strcat(resp_96, byte);
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 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
1969 pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, yd->current_status, 0);
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1970 yahoo_packet_hash(pack, "ssssss",
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1971 0, name,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1972 6, resp_6,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1973 96, resp_96,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1974 1, name,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1975 244, YAHOO_CLIENT_VERSION_ID,
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
1976 135, YAHOO_CLIENT_VERSION);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1977 if (yd->picture_checksum)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
1978 yahoo_packet_hash_int(pack, 192, yd->picture_checksum);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1979
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
1980 yahoo_packet_send_and_free(pack, yd);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1981
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1982 purple_cipher_context_destroy(md5_ctx);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1983 purple_cipher_context_destroy(sha1_ctx1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1984 purple_cipher_context_destroy(sha1_ctx2);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1985
7424
a9f6b975759c [gaim-migrate @ 8026]
Ethan Blanton <elb@pidgin.im>
parents: 7423
diff changeset
1986 g_free(password_hash);
a9f6b975759c [gaim-migrate @ 8026]
Ethan Blanton <elb@pidgin.im>
parents: 7423
diff changeset
1987 g_free(crypt_hash);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1988 }
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1989
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1990 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
1991 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1992 char *seed = NULL;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1993 char *sn = NULL;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1994 GSList *l = pkt->hash;
7010
afa5752740a7 [gaim-migrate @ 7573]
Tim Ringenbach <marv@pidgin.im>
parents: 6998
diff changeset
1995 int m = 0;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1996 gchar *buf;
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1997
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1998 while (l) {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1999 struct yahoo_pair *pair = l->data;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2000 if (pair->key == 94)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2001 seed = pair->value;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2002 if (pair->key == 1)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2003 sn = pair->value;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2004 if (pair->key == 13)
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2005 m = atoi(pair->value);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2006 l = l->next;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2007 }
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2008
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2009 if (seed) {
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2010 switch (m) {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2011 case 0:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2012 yahoo_process_auth_old(gc, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2013 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2014 case 1:
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2015 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
2016 yahoo_process_auth_new(gc, seed);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2017 break;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2018 default:
7043
b79933739678 [gaim-migrate @ 7606]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7015
diff changeset
2019 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
2020 "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
2021 "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
2022 purple_notify_error(gc, "", _("Failed Yahoo! Authentication"),
7043
b79933739678 [gaim-migrate @ 7606]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7015
diff changeset
2023 buf);
b79933739678 [gaim-migrate @ 7606]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7015
diff changeset
2024 g_free(buf);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2025 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
2026 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2027 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2028 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2029
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2030 static void ignore_buddy(PurpleBuddy *buddy) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2031 PurpleGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2032 PurpleAccount *account;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2033 gchar *name;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2034
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2035 if (!buddy)
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
2036 return;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2037
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2038 group = purple_buddy_get_group(buddy);
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2039 name = g_strdup(buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2040 account = buddy->account;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2041
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2042 purple_debug(PURPLE_DEBUG_INFO, "blist",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2043 "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
2044 purple_account_remove_buddy(account, buddy, group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2045 purple_blist_remove_buddy(buddy);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2046
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
2047 serv_add_deny(account->gc, name);
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2048
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2049 g_free(name);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2050 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2051
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2052 static void keep_buddy(PurpleBuddy *b) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2053 purple_privacy_deny_remove(b->account, b->name, 1);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2054 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2055
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2056 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
2057 PurpleBuddy *b;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2058 GSList *l;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2059 gchar *who = NULL;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2060 gchar *sn = NULL;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2061 gchar buf[BUF_LONG];
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2062 gint ignore = 0;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2063 gint status = 0;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2064
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2065 for (l = pkt->hash; l; l = l->next) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2066 struct yahoo_pair *pair = l->data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2067 switch (pair->key) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2068 case 0:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2069 who = pair->value;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2070 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2071 case 1:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2072 sn = pair->value;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2073 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2074 case 13:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2075 ignore = strtol(pair->value, NULL, 10);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2076 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2077 case 66:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2078 status = strtol(pair->value, NULL, 10);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2079 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2080 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2081 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2082 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2083 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2084
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2085 switch (status) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2086 case 12:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2087 b = purple_find_buddy(gc->account, who);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2088 g_snprintf(buf, sizeof(buf), _("You have tried to ignore %s, but the "
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2089 "user is on your buddy list. Clicking \"Yes\" "
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2090 "will remove and ignore the buddy."), who);
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2091 purple_request_yes_no(gc, NULL, _("Ignore buddy?"), buf, 0,
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
2092 gc->account, who, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2093 b,
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2094 G_CALLBACK(ignore_buddy),
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2095 G_CALLBACK(keep_buddy));
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2096 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2097 case 2:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2098 case 3:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2099 case 0:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2100 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2101 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2102 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2103 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2104
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2105 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
2106 {
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2107 #ifdef TRY_WEBMESSENGER_LOGIN
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2108 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
2109 #endif
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2110 GSList *l = pkt->hash;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2111 int err = 0;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2112 char *msg;
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2113 char *url = NULL;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2114 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
2115 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
2116 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2117
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2118 while (l) {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2119 struct yahoo_pair *pair = l->data;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2120
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2121 if (pair->key == 66)
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2122 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
2123 else if (pair->key == 20)
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2124 url = pair->value;
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2125
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2126 l = l->next;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2127 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2128
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2129 switch (err) {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2130 case 3:
15062
78e3c1c8c4f4 [gaim-migrate @ 17779]
Richard Laager <rlaager@pidgin.im>
parents: 14904
diff changeset
2131 msg = g_strdup(_("Invalid screen name."));
21510
eb2829adfd40 Use PURPLE_CONNECTION_ERROR_INVALID_USERNAME in oscar and yahoo, which were
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
2132 reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME;
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2133 break;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2134 case 13:
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2135 #ifdef TRY_WEBMESSENGER_LOGIN
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2136 if (!yd->wm) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2137 PurpleUtilFetchUrlData *url_data;
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2138 yd->wm = TRUE;
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2139 if (yd->fd >= 0)
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2140 close(yd->fd);
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2141 if (gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2142 purple_input_remove(gc->inpa);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2143 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
2144 "Purple/" VERSION, FALSE, yahoo_login_page_cb, gc);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2145 if (url_data != NULL)
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2146 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
2147 return;
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2148 }
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2149 #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
2150 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
2151 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
2152
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2153 msg = g_strdup(_("Incorrect password."));
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2154 break;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2155 case 14:
9280
cca558311af2 [gaim-migrate @ 10083]
Tim Ringenbach <marv@pidgin.im>
parents: 9279
diff changeset
2156 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
2157 break;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2158 default:
9280
cca558311af2 [gaim-migrate @ 10083]
Tim Ringenbach <marv@pidgin.im>
parents: 9279
diff changeset
2159 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
2160 }
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2161
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2162 if (url)
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2163 fullmsg = g_strdup_printf("%s\n%s", msg, url);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2164 else
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2165 fullmsg = g_strdup(msg);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2166
21510
eb2829adfd40 Use PURPLE_CONNECTION_ERROR_INVALID_USERNAME in oscar and yahoo, which were
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
2167 purple_connection_error_reason(gc, reason, fullmsg);
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2168 g_free(msg);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2169 g_free(fullmsg);
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2170 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2171
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2172 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
2173 {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2174 int err = 0;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2175 char *who = NULL;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2176 char *group = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
2177 char *decoded_group;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2178 char *buf;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
2179 YahooFriend *f;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2180 GSList *l = pkt->hash;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2181
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2182 while (l) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2183 struct yahoo_pair *pair = l->data;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2184
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2185 switch (pair->key) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2186 case 66:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2187 err = strtol(pair->value, NULL, 10);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2188 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2189 case 7:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2190 who = pair->value;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2191 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2192 case 65:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2193 group = pair->value;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2194 break;
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
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2197 l = l->next;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2198 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2199
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2200 if (!who)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2201 return;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2202 if (!group)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2203 group = "";
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2204
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2205 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
2206 f = yahoo_friend_find_or_new(gc, who);
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
2207 yahoo_update_status(gc, who, f);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2208 return;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2209 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2210
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
2211 decoded_group = yahoo_string_decode(gc, group, FALSE);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2212 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
2213 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
2214 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
2215 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
2216 g_free(buf);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
2217 g_free(decoded_group);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2218 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2219
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2220 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
2221 {
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2222 GSList *l = pkt->hash;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2223 char *who = NULL;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2224 char *base64 = NULL;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
2225 guchar *decoded;
11127
5e539d9d26a4 [gaim-migrate @ 13183]
Mark Doliner <markdoliner@pidgin.im>
parents: 11111
diff changeset
2226 gsize len;
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2227
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2228 while (l) {
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2229 struct yahoo_pair *pair = l->data;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2230
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2231 switch (pair->key) {
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2232 case 5:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2233 /* our identity */
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2234 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2235 case 4:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2236 who = pair->value;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2237 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2238 case 1:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2239 /* who again, the master identity this time? */
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2240 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2241 case 12:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2242 base64 = pair->value;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2243 /* 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
2244 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
2245 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2246 /*
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2247 TODO: figure these out
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2248 yahoo: Key: 61 Value: 0
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2249 yahoo: Key: 2 Value:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2250 yahoo: Key: 13 Value: 0
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2251 yahoo: Key: 49 Value: PEERTOPEER
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2252 yahoo: Key: 140 Value: 1
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2253 yahoo: Key: 11 Value: -1786225828
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2254 */
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 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2257
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2258 l = l->next;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2259 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2260
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2261 if (base64) {
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2262 guint32 ip;
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2263 char *tmp2;
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2264 YahooFriend *f;
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2265
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2266 decoded = purple_base64_decode(base64, &len);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2267 if (len) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2268 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
2269 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
2270 g_free(tmp);
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2271 }
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2272
11144
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
2273 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
2274 ip = strtol(tmp2, NULL, 10);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2275 g_free(tmp2);
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2276 g_free(decoded);
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2277 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
2278 (ip >> 24) & 0xff);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2279 f = yahoo_friend_find(gc, who);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2280 if (f)
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2281 yahoo_friend_set_ip(f, tmp2);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2282 g_free(tmp2);
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2283 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2284 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2285
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2286 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
2287 {
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2288 char *who = NULL, *msg = NULL, *id = NULL;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2289 GSList *l = pkt->hash;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2290
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2291 while (l) {
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2292 struct yahoo_pair *pair = l->data;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2293
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2294 switch (pair->key) {
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2295 case 4:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2296 who = pair->value;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2297 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2298 case 5:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2299 /* us */
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2300 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2301 case 230:
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2302 /* the audible, in foo.locale.bar.baz format
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2303 eg: base.tw.smiley.smiley43 */
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2304 id = pair->value;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2305 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2306 case 231:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2307 /* the text of the audible */
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2308 msg = pair->value;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2309 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2310 case 232:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2311 /* weird number (md5 hash?), like 8ebab9094156135f5dcbaccbeee662a5c5fd1420 */
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2312 break;
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
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2315 l = l->next;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2316 }
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2317
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2318 if (!msg)
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2319 msg = id;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2320 if (!who || !msg)
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2321 return;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2322 if (!g_utf8_validate(msg, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2323 purple_debug_misc("yahoo", "Warning, nonutf8 audible, ignoring!\n");
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2324 return;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2325 }
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
2326 if (!yahoo_privacy_check(gc, who)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2327 purple_debug_misc("yahoo", "Audible message from %s for %s dropped!\n",
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
2328 gc->account->username, who);
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
2329 return;
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
2330 }
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2331 if (id) {
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2332 /* "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
2333 char **audible_locale = g_strsplit(id, ".", 0);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2334 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
2335 g_strfreev(audible_locale);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2336
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2337 serv_got_im(gc, who, buf, 0, time(NULL));
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2338 g_free(buf);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2339 } else
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2340 serv_got_im(gc, who, msg, 0, time(NULL));
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2341 }
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2342
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2343 static void yahoo_packet_process(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2344 {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2345 switch (pkt->service) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2346 case YAHOO_SERVICE_LOGON:
2771
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
2347 case YAHOO_SERVICE_LOGOFF:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2348 case YAHOO_SERVICE_ISAWAY:
2737
f7edb9c3f348 [gaim-migrate @ 2750]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2724
diff changeset
2349 case YAHOO_SERVICE_ISBACK:
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2350 case YAHOO_SERVICE_GAMELOGON:
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2351 case YAHOO_SERVICE_GAMELOGOFF:
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
2352 case YAHOO_SERVICE_CHATLOGON:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
2353 case YAHOO_SERVICE_CHATLOGOFF:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
2354 case YAHOO_SERVICE_Y6_STATUS_UPDATE:
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2355 case YAHOO_SERVICE_STATUS_15:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2356 yahoo_process_status(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2357 break;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2358 case YAHOO_SERVICE_NOTIFY:
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2359 yahoo_process_notify(gc, pkt);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
2360 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2361 case YAHOO_SERVICE_MESSAGE:
2786
c281356d8eda [gaim-migrate @ 2799]
brian macke
parents: 2772
diff changeset
2362 case YAHOO_SERVICE_GAMEMSG:
5939
cedbbd2d983a [gaim-migrate @ 6379]
Tim Ringenbach <marv@pidgin.im>
parents: 5921
diff changeset
2363 case YAHOO_SERVICE_CHATMSG:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2364 yahoo_process_message(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2365 break;
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2366 case YAHOO_SERVICE_SYSMESSAGE:
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2367 yahoo_process_sysmessage(gc, pkt);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2368 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2369 case YAHOO_SERVICE_NEWMAIL:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2370 yahoo_process_mail(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2371 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2372 case YAHOO_SERVICE_NEWCONTACT:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2373 yahoo_process_contact(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2374 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2375 case YAHOO_SERVICE_AUTHRESP:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2376 yahoo_process_authresp(gc, pkt);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2377 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2378 case YAHOO_SERVICE_LIST:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2379 yahoo_process_list(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2380 break;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2381 case YAHOO_SERVICE_LIST_15:
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2382 yahoo_process_list_15(gc, pkt);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2383 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2384 case YAHOO_SERVICE_AUTH:
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2385 yahoo_process_auth(gc, pkt);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2386 break;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
2387 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
2388 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
2389 break;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2390 case YAHOO_SERVICE_ADDBUDDY:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2391 yahoo_process_addbuddy(gc, pkt);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2392 break;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2393 case YAHOO_SERVICE_IGNORECONTACT:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2394 yahoo_process_ignore(gc, pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2395 break;
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2396 case YAHOO_SERVICE_CONFINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2397 case YAHOO_SERVICE_CONFADDINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2398 yahoo_process_conference_invite(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2399 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2400 case YAHOO_SERVICE_CONFDECLINE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2401 yahoo_process_conference_decline(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2402 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2403 case YAHOO_SERVICE_CONFLOGON:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2404 yahoo_process_conference_logon(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2405 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2406 case YAHOO_SERVICE_CONFLOGOFF:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2407 yahoo_process_conference_logoff(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2408 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2409 case YAHOO_SERVICE_CONFMSG:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2410 yahoo_process_conference_message(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2411 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2412 case YAHOO_SERVICE_CHATONLINE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2413 yahoo_process_chat_online(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2414 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2415 case YAHOO_SERVICE_CHATLOGOUT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2416 yahoo_process_chat_logout(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2417 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2418 case YAHOO_SERVICE_CHATGOTO:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2419 yahoo_process_chat_goto(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2420 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2421 case YAHOO_SERVICE_CHATJOIN:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2422 yahoo_process_chat_join(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2423 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2424 case YAHOO_SERVICE_CHATLEAVE: /* XXX is this right? */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2425 case YAHOO_SERVICE_CHATEXIT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2426 yahoo_process_chat_exit(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2427 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2428 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
2429 case YAHOO_SERVICE_CHATADDINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2430 yahoo_process_chat_addinvite(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2431 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2432 case YAHOO_SERVICE_COMMENT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2433 yahoo_process_chat_message(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2434 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
2435 case YAHOO_SERVICE_PRESENCE_PERM:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
2436 case YAHOO_SERVICE_PRESENCE_SESSION:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
2437 yahoo_process_presence(gc, pkt);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
2438 break;
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2439 case YAHOO_SERVICE_P2PFILEXFER:
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
2440 /* 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
2441 yahoo_process_p2pfilexfer(gc, pkt);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2442 case YAHOO_SERVICE_FILETRANSFER:
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2443 yahoo_process_filetransfer(gc, pkt);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2444 break;
11180
4098d74c03c2 [gaim-migrate @ 13291]
Daniel Atallah <datallah@pidgin.im>
parents: 11153
diff changeset
2445 case YAHOO_SERVICE_PEERTOPEER:
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2446 yahoo_process_p2p(gc, pkt);
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2447 break;
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
2448 case YAHOO_SERVICE_PICTURE:
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
2449 yahoo_process_picture(gc, pkt);
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
2450 break;
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2451 case YAHOO_SERVICE_PICTURE_UPDATE:
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2452 yahoo_process_picture_update(gc, pkt);
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2453 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2454 case YAHOO_SERVICE_PICTURE_CHECKSUM:
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2455 yahoo_process_picture_checksum(gc, pkt);
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2456 break;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2457 case YAHOO_SERVICE_PICTURE_UPLOAD:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2458 yahoo_process_picture_upload(gc, pkt);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2459 break;
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13941
diff changeset
2460 case YAHOO_SERVICE_AVATAR_UPDATE:
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13941
diff changeset
2461 yahoo_process_avatar_update(gc, pkt);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13941
diff changeset
2462 break;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2463 case YAHOO_SERVICE_AUDIBLE:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2464 yahoo_process_audible(gc, pkt);
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2465 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2466 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
2467 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
2468 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2469 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
2470 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
2471 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2472 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
2473 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
2474 break;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2475
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2476 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2477 purple_debug(PURPLE_DEBUG_ERROR, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2478 "Unhandled service 0x%02x\n", pkt->service);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2479 break;
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 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2482
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2483 static void yahoo_pending(gpointer data, gint source, PurpleInputCondition cond)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2484 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2485 PurpleConnection *gc = data;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2486 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2487 char buf[1024];
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2488 int len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2489
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2490 len = read(yd->fd, buf, sizeof(buf));
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2491
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2492 if (len < 0) {
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2493 gchar *tmp;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2494
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2495 if (errno == EAGAIN)
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2496 /* No worries */
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2497 return;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2498
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2499 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
2500 g_strerror(errno));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2501 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
2502 g_free(tmp);
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2503 return;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2504 } else if (len == 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2505 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
2506 _("Server closed the connection."));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2507 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2508 }
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
2509 gc->last_received = time(NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2510 yd->rxqueue = g_realloc(yd->rxqueue, len + yd->rxlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2511 memcpy(yd->rxqueue + yd->rxlen, buf, len);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2512 yd->rxlen += len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2513
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2514 while (1) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2515 struct yahoo_packet *pkt;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2516 int pos = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2517 int pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2518
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2519 if (yd->rxlen < YAHOO_PACKET_HDRLEN)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2520 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2521
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
2522 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
2523 /* HEY! This isn't even a YMSG packet. What
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2524 * are you trying to pull? */
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2525 guchar *start;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2526
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2527 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
2528
10635
77bdc0c3a07f [gaim-migrate @ 12117]
Tim Ringenbach <marv@pidgin.im>
parents: 10611
diff changeset
2529 start = memchr(yd->rxqueue + 1, 'Y', yd->rxlen - 1);
10610
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2530 if (start) {
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2531 g_memmove(yd->rxqueue, start, yd->rxlen - (start - yd->rxqueue));
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2532 yd->rxlen -= start - yd->rxqueue;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2533 continue;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2534 } else {
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2535 g_free(yd->rxqueue);
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2536 yd->rxqueue = NULL;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2537 yd->rxlen = 0;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2538 return;
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 }
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2541
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2542 pos += 4; /* YMSG */
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 pos += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2545
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2546 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
2547 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2548 "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2549
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2550 if (yd->rxlen < (YAHOO_PACKET_HDRLEN + pktlen))
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2551 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2552
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2553 yahoo_packet_dump(yd->rxqueue, YAHOO_PACKET_HDRLEN + pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2554
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2555 pkt = yahoo_packet_new(0, 0, 0);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2556
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2557 pkt->service = yahoo_get16(yd->rxqueue + pos); pos += 2;
3021
91e6cbdb62b1 [gaim-migrate @ 3034]
Sean Egan <seanegan@pidgin.im>
parents: 3020
diff changeset
2558 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
2559 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2560 "Yahoo Service: 0x%02x Status: %d\n",
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2561 pkt->service, pkt->status);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2562 pkt->id = yahoo_get32(yd->rxqueue + pos); pos += 4;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2564 yahoo_packet_read(pkt, yd->rxqueue + pos, pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2565
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2566 yd->rxlen -= YAHOO_PACKET_HDRLEN + pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2567 if (yd->rxlen) {
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
2568 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
2569 g_free(yd->rxqueue);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2570 yd->rxqueue = tmp;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2571 } else {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2572 g_free(yd->rxqueue);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2573 yd->rxqueue = NULL;
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
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2576 yahoo_packet_process(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2577
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2578 yahoo_packet_free(pkt);
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 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2581
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
2582 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
2583 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2584 PurpleConnection *gc = data;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2585 struct yahoo_data *yd;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2586 struct yahoo_packet *pkt;
11076
f6c4835e68ee [gaim-migrate @ 13086]
Mark Doliner <markdoliner@pidgin.im>
parents: 11043
diff changeset
2587
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2588 if (!PURPLE_CONNECTION_IS_VALID(gc)) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2589 close(source);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2590 return;
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
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2593 if (source < 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2594 gchar *tmp;
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2595 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
2596 error_message);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2597 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
2598 g_free(tmp);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2599 return;
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
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2602 yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2603 yd->fd = source;
11076
f6c4835e68ee [gaim-migrate @ 13086]
Mark Doliner <markdoliner@pidgin.im>
parents: 11043
diff changeset
2604
11078
b611f3a7800c [gaim-migrate @ 13088]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11077
diff changeset
2605 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, 0);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2606
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2607 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
2608 yahoo_packet_send_and_free(pkt, yd);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2609
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2610 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
2611 }
9370
0e1f9854bb0c [gaim-migrate @ 10178]
Tim Ringenbach <marv@pidgin.im>
parents: 9369
diff changeset
2612
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2613 #ifdef TRY_WEBMESSENGER_LOGIN
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
2614 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
2615 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2616 PurpleConnection *gc = data;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2617 struct yahoo_data *yd;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2618 struct yahoo_packet *pkt;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2619
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2620 if (!PURPLE_CONNECTION_IS_VALID(gc)) {
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2621 close(source);
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2622 return;
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
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2625 if (source < 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2626 gchar *tmp;
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2627 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
2628 error_message);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2629 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
2630 g_free(tmp);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2631 return;
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
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2634 yd = gc->proto_data;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2635 yd->fd = source;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2636
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2637 pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, 0);
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2638
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
2639 yahoo_packet_hash(pkt, "sss", 0,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2640 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
2641 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
2642 6, yd->auth);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
2643 yahoo_packet_send_and_free(pkt, yd);
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
2644
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2645 g_free(yd->auth);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2646 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
2647 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2648
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2649 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
2650 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2651 PurpleConnection *gc = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2652 PurpleAccount *account = purple_connection_get_account(gc);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2653 struct yahoo_data *yd = gc->proto_data;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2654 char bufread[2048], *i = bufread, *buf = bufread;
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2655 int len;
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2656 GString *s;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2657
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2658 len = read(source, bufread, sizeof(bufread) - 1);
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2659
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2660 if (len < 0) {
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2661 gchar *tmp;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2662
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2663 if (errno == EAGAIN)
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2664 /* No worries */
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2665 return;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2666
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2667 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
2668 g_strerror(errno));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2669 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
2670 g_free(tmp);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2671 return;
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2672 } else if (len == 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2673 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
2674 _("Server closed the connection."));
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2675 return;
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
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2678 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
2679 yd->rxqueue = g_realloc(yd->rxqueue, yd->rxlen + len + 1);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2680 memcpy(yd->rxqueue + yd->rxlen, buf, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2681 yd->rxlen += len;
14321
21c565de27ea [gaim-migrate @ 16941]
Tim Ringenbach <marv@pidgin.im>
parents: 14320
diff changeset
2682 i = buf = (char *)yd->rxqueue;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2683 len = yd->rxlen;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2684 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2685 buf[len] = '\0';
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2686
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2687 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
2688 strncmp(buf, "HTTP/1.1 302", strlen("HTTP/1.1 302")))) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2689 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
2690 _("Received unexpected HTTP response from server."));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2691 return;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2692 }
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2693
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2694 s = g_string_sized_new(len);
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2695
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2696 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
2697
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2698 i += strlen("Set-Cookie: ");
8243
e40bd494b78e [gaim-migrate @ 8966]
Daniel Atallah <datallah@pidgin.im>
parents: 8235
diff changeset
2699 for (;*i != ';' && *i != '\0'; i++)
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2700 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
2701
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2702 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
2703 /* 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
2704 * 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
2705 */
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2706 }
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2707
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2708 yd->auth = g_string_free(s, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2709 purple_input_remove(gc->inpa);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2710 close(source);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2711 g_free(yd->rxqueue);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2712 yd->rxqueue = NULL;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2713 yd->rxlen = 0;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2714 /* 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
2715 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
2716 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2717 yahoo_got_web_connected, gc) == NULL) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2718 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
2719 _("Connection problem"));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2720 return;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
2721 }
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2722 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2723
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2724 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
2725 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2726 PurpleConnection *gc;
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2727 struct yahoo_data *yd;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2728 int written, remaining;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2729
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2730 gc = data;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2731 yd = gc->proto_data;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2732
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2733 remaining = strlen(yd->auth) - yd->auth_written;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2734 written = write(source, yd->auth + yd->auth_written, remaining);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2735
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2736 if (written < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2737 written = 0;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2738 else if (written <= 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2739 gchar *tmp;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2740 g_free(yd->auth);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2741 yd->auth = NULL;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2742 if (gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2743 purple_input_remove(gc->inpa);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2744 gc->inpa = 0;
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2745 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
2746 "login.yahoo.com:80", g_strerror(errno));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2747 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
2748 g_free(tmp);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2749 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2750 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2751
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2752 if (written < remaining) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2753 yd->auth_written += written;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2754 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2755 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2756
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2757 g_free(yd->auth);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2758 yd->auth = NULL;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2759 yd->auth_written = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2760 purple_input_remove(gc->inpa);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2761 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
2762 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2763
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
2764 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
2765 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2766 PurpleConnection *gc = data;
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2767
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2768 if (source < 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2769 gchar *tmp;
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2770 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
2771 "login.yahoo.com:80", error_message);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2772 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
2773 g_free(tmp);
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2774 return;
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
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2777 if (gc->inpa == 0)
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2778 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2779 gc->inpa = purple_input_add(source, PURPLE_INPUT_WRITE,
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2780 yahoo_got_cookies_send_cb, gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2781 yahoo_got_cookies_send_cb(gc, source, PURPLE_INPUT_WRITE);
14146
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 }
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2784
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2785 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
2786 {
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2787 if (!strcmp(key, "passwd"))
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2788 return;
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2789 g_string_append_c(url, '&');
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2790 g_string_append(url, key);
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2791 g_string_append_c(url, '=');
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2792 if (!strcmp(key, ".save") || !strcmp(key, ".js"))
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2793 g_string_append_c(url, '1');
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2794 else if (!strcmp(key, ".challenge"))
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2795 g_string_append(url, val);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2796 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2797 g_string_append(url, purple_url_encode(val));
7134
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
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2800 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
2801 {
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2802 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
2803 const char *c = buf;
12b7979bce6e [gaim-migrate @ 7705]
Christian Hammond <chipx86@chipx86.com>
parents: 7134
diff changeset
2804 char *d;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2805 char name[64], value[64];
11188
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2806 int count;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2807 int input_len = strlen("<input ");
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2808 int name_len = strlen("name=\"");
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2809 int value_len = strlen("value=\"");
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2810 while ((len > ((c - buf) + input_len))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2811 && (c = strstr(c, "<input "))) {
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2812 if (!(c = g_strstr_len(c, len - (c - buf), "name=\"")))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2813 continue;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2814 c += name_len;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2815 count = sizeof(name)-1;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2816 for (d = name; (len > ((c - buf) + 1)) && *c!='"'
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2817 && count; c++, d++, count--)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2818 *d = *c;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2819 *d = '\0';
8118
7f5315bb4506 [gaim-migrate @ 8822]
Douglas Thrift <douglas@douglasthrift.net>
parents: 8113
diff changeset
2820 count = sizeof(value)-1;
11188
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2821 if (!(d = g_strstr_len(c, len - (c - buf), "value=\"")))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2822 continue;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2823 d += value_len;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2824 if (strchr(c, '>') < d)
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2825 break;
11188
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2826 for (c = d, d = value; (len > ((c - buf) + 1))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2827 && *c!='"' && count; c++, d++, count--)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2828 *d = *c;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2829 *d = '\0';
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2830 g_hash_table_insert(hash, g_strdup(name), g_strdup(value));
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2831 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2832 return hash;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2833 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2834
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2835 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2836 yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2837 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
2838 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2839 PurpleConnection *gc = (PurpleConnection *)user_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2840 PurpleAccount *account = purple_connection_get_account(gc);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2841 struct yahoo_data *yd = gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2842 const char *sn = purple_account_get_username(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2843 const char *pass = purple_connection_get_password(gc);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2844 GHashTable *hash = yahoo_login_page_hash(url_text, len);
10575
f360d2dc8a1c [gaim-migrate @ 11968]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10553
diff changeset
2845 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
2846 char md5[33], *hashp = md5, *chal;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2847 int i;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2848 PurpleCipher *cipher;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2849 PurpleCipherContext *context;
11183
be87fe695c93 [gaim-migrate @ 13295]
Mark Doliner <markdoliner@pidgin.im>
parents: 11180
diff changeset
2850 guchar digest[16];
7191
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2851
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2852 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2853
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2854 if (error_message != NULL)
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2855 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2856 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
2857 error_message);
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2858 return;
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2859 }
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2860
7191
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2861 url = g_string_append(url, sn);
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2862 url = g_string_append(url, "&passwd=");
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2863
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2864 cipher = purple_ciphers_find_cipher("md5");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2865 context = purple_cipher_context_new(cipher, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2866
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2867 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
2868 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2869 for (i = 0; i < 16; ++i) {
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2870 g_snprintf(hashp, 3, "%02x", digest[i]);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2871 hashp += 2;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2872 }
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2873
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2874 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
2875 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2876 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
2877 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2878 hashp = md5;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2879 for (i = 0; i < 16; ++i) {
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2880 g_snprintf(hashp, 3, "%02x", digest[i]);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2881 hashp += 2;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2882 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2883 /*
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2884 * 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
2885 * I updated it..
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2886
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2887 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2888 purple_cipher_context_append(context, md5, strlen(md5));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2889 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2890 hashp = md5;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2891 for (i = 0; i < 16; ++i) {
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2892 g_snprintf(hashp, 3, "%02x", digest[i]);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2893 hashp += 2;
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 */
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2896 g_free(chal);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
2897
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2898 url = g_string_append(url, md5);
7138
12b7979bce6e [gaim-migrate @ 7705]
Christian Hammond <chipx86@chipx86.com>
parents: 7134
diff changeset
2899 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
2900
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2901 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
2902 "Host: login.yahoo.com\r\n\r\n");
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2903 g_hash_table_destroy(hash);
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2904 yd->auth = g_string_free(url, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2905 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
2906 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
2907 _("Connection problem"));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2908 return;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2909 }
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2910
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2911 purple_cipher_context_destroy(context);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2912 }
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2913 #endif
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2914
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2915 static void yahoo_server_check(PurpleAccount *account)
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2916 {
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2917 const char *server;
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2918
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2919 server = purple_account_get_string(account, "server", YAHOO_PAGER_HOST);
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2920
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2921 if (strcmp(server, "scs.yahoo.com") == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2922 purple_account_set_string(account, "server", YAHOO_PAGER_HOST);
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2923 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2924
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2925 static void yahoo_picture_check(PurpleAccount *account)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2926 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2927 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
2928 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
2929
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 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
2931 purple_imgstore_unref(img);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2932 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2933
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2934 static int get_yahoo_status_from_purple_status(PurpleStatus *status)
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2935 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2936 PurplePresence *presence;
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2937 const char *status_id;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2938 const char *msg;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2939
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2940 presence = purple_status_get_presence(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2941 status_id = purple_status_get_id(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2942 msg = purple_status_get_attr_string(status, "message");
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2943
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2944 if (!strcmp(status_id, YAHOO_STATUS_TYPE_AVAILABLE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2945 if ((msg != NULL) && (*msg != '\0'))
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2946 return YAHOO_STATUS_CUSTOM;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2947 else
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2948 return YAHOO_STATUS_AVAILABLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2949 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_BRB)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2950 return YAHOO_STATUS_BRB;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2951 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_BUSY)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2952 return YAHOO_STATUS_BUSY;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2953 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTATHOME)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2954 return YAHOO_STATUS_NOTATHOME;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2955 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTATDESK)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2956 return YAHOO_STATUS_NOTATDESK;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2957 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTINOFFICE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2958 return YAHOO_STATUS_NOTINOFFICE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2959 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_ONPHONE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2960 return YAHOO_STATUS_ONPHONE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2961 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_ONVACATION)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2962 return YAHOO_STATUS_ONVACATION;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2963 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_OUTTOLUNCH)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2964 return YAHOO_STATUS_OUTTOLUNCH;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2965 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_STEPPEDOUT)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2966 return YAHOO_STATUS_STEPPEDOUT;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2967 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_INVISIBLE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2968 return YAHOO_STATUS_INVISIBLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2969 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_AWAY)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2970 return YAHOO_STATUS_CUSTOM;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2971 } else if (purple_presence_is_idle(presence)) {
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2972 return YAHOO_STATUS_IDLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2973 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2974 purple_debug_error("yahoo", "Unexpected PurpleStatus!\n");
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2975 return YAHOO_STATUS_AVAILABLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2976 }
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2977 }
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2978
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2979 static void yahoo_login(PurpleAccount *account) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2980 PurpleConnection *gc = purple_account_get_connection(account);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2981 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
2982 PurpleStatus *status = purple_account_get_active_status(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2983 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
2984
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2985 purple_connection_update_progress(gc, _("Connecting"), 1, 2);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2986
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2987 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
2988
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2989 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
2990 yd->txhandler = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2991 /* 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
2992 yd->txbuf = purple_circ_buffer_new(0);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2993 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
2994 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
2995 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
2996 yd->confs = NULL;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2997 yd->conf_id = 2;
11076
f6c4835e68ee [gaim-migrate @ 13086]
Mark Doliner <markdoliner@pidgin.im>
parents: 11043
diff changeset
2998
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2999 yd->current_status = get_yahoo_status_from_purple_status(status);
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3000
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
3001 yahoo_server_check(account);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3002 yahoo_picture_check(account);
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
3003
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3004 if (purple_account_get_bool(account, "yahoojp", FALSE)) {
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3005 yd->jp = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3006 if (purple_proxy_connect(gc, account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3007 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
3008 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
3009 yahoo_got_connected, gc) == NULL)
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3010 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
3011 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
3012 _("Connection problem"));
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3013 return;
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3014 }
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3015 } else {
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3016 yd->jp = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3017 if (purple_proxy_connect(gc, account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3018 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
3019 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
3020 yahoo_got_connected, gc) == NULL)
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3021 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
3022 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
3023 _("Connection problem"));
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3024 return;
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3025 }
2681
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 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3028
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3029 static void yahoo_close(PurpleConnection *gc) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3030 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
9782
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3031 GSList *l;
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3032
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3033 if (gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3034 purple_input_remove(gc->inpa);
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3035
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3036 while (yd->url_datas) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3037 purple_util_fetch_url_cancel(yd->url_datas->data);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3038 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
3039 }
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3040
9782
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3041 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
3042 PurpleConversation *conv = l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3043
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3044 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
3045 purple_connection_get_display_name(gc),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3046 purple_conv_chat_get_users(PURPLE_CONV_CHAT(conv)));
9782
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3047 }
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3048 g_slist_free(yd->confs);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3049
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3050 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
3051 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
3052 l->data=NULL;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3053 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3054 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
3055
12841
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3056 yd->chat_online = 0;
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3057 if (yd->in_chat)
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3058 yahoo_c_leave(gc, 1); /* 1 = YAHOO_CHAT_ID */
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3059
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3060 g_hash_table_destroy(yd->friends);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3061 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
3062 g_hash_table_destroy(yd->xfer_peer_idstring_map);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3063 g_free(yd->chat_name);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3064
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3065 g_free(yd->cookie_y);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3066 g_free(yd->cookie_t);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3067
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3068 if (yd->txhandler)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3069 purple_input_remove(yd->txhandler);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3070
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3071 purple_circ_buffer_destroy(yd->txbuf);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
3072
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3073 if (yd->fd >= 0)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3074 close(yd->fd);
3720
dbba62e0d603 [gaim-migrate @ 3853]
Herman Bloggs <herman@bluedigits.com>
parents: 3642
diff changeset
3075
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3076 g_free(yd->rxqueue);
2687
664e22f507cf [gaim-migrate @ 2700]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2686
diff changeset
3077 yd->rxlen = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3078 g_free(yd->picture_url);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3079
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14604
diff changeset
3080 if (yd->buddy_icon_connect_data)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3081 purple_proxy_connect_cancel(yd->buddy_icon_connect_data);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3082 if (yd->picture_upload_todo)
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3083 yahoo_buddy_icon_upload_data_free(yd->picture_upload_todo);
9376
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3084 if (yd->ycht)
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3085 ycht_connection_close(yd->ycht);
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3086
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
3087 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
3088 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
3089 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
3090 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
3091
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3092 g_free(yd);
13344
fde4e6dc84f8 [gaim-migrate @ 15713]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13297
diff changeset
3093 gc->proto_data = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3094 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3095
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3096 static const char *yahoo_list_icon(PurpleAccount *a, PurpleBuddy *b)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3097 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
3098 return "yahoo";
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3099 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3100
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3101 static const char *yahoo_list_emblem(PurpleBuddy *b)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3102 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3103 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3104 PurpleConnection *gc;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3105 struct yahoo_data *yd;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3106 YahooFriend *f;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3107 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3108
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3109 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
3110 !(yd = gc->proto_data))
15558
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
3111 return NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3112
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3113 f = yahoo_friend_find(gc, b->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3114 if (!f) {
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3115 return "not-authorized";
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3116 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3117
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3118 presence = purple_buddy_get_presence(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3119
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3120 if (purple_presence_is_online(presence)) {
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3121 if (yahoo_friend_get_game(f))
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3122 return "game";
14366
ba943644ad80 [gaim-migrate @ 16994]
Tim Ringenbach <marv@pidgin.im>
parents: 14362
diff changeset
3123 if (f->protocol == 2)
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3124 return "msn";
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3125 }
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3126 return NULL;
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3127 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3128
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3129 static const char *yahoo_get_status_string(enum yahoo_status a)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3130 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3131 switch (a) {
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3132 case YAHOO_STATUS_BRB:
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3133 return _("Be Right Back");
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3134 case YAHOO_STATUS_BUSY:
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3135 return _("Busy");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3136 case YAHOO_STATUS_NOTATHOME:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3137 return _("Not at Home");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3138 case YAHOO_STATUS_NOTATDESK:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3139 return _("Not at Desk");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3140 case YAHOO_STATUS_NOTINOFFICE:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3141 return _("Not in Office");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3142 case YAHOO_STATUS_ONPHONE:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3143 return _("On the Phone");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3144 case YAHOO_STATUS_ONVACATION:
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3145 return _("On Vacation");
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3146 case YAHOO_STATUS_OUTTOLUNCH:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3147 return _("Out to Lunch");
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3148 case YAHOO_STATUS_STEPPEDOUT:
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3149 return _("Stepped Out");
2873
9e56887eeb06 [gaim-migrate @ 2886]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2856
diff changeset
3150 case YAHOO_STATUS_INVISIBLE:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
3151 return _("Invisible");
4730
f6ae5bf30171 [gaim-migrate @ 5043]
Sean Egan <seanegan@pidgin.im>
parents: 4729
diff changeset
3152 case YAHOO_STATUS_IDLE:
f6ae5bf30171 [gaim-migrate @ 5043]
Sean Egan <seanegan@pidgin.im>
parents: 4729
diff changeset
3153 return _("Idle");
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3154 case YAHOO_STATUS_OFFLINE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3155 return _("Offline");
2879
e417cf7111c4 [gaim-migrate @ 2892]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2878
diff changeset
3156 default:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3157 return _("Available");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3158 }
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3161 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
3162
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3163 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3164 PurpleConnection *gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3165
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3166 GHashTable *components;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3167 struct yahoo_data *yd;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3168 int id;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3169
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3170 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
3171
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3172 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3173 gc = purple_account_get_connection(buddy->account);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3174 yd = gc->proto_data;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3175 id = yd->conf_id;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3176
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3177 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
3178 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
3179 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
3180 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
3181 g_hash_table_replace(components, g_strdup("type"), g_strdup("Conference"));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3182 yahoo_c_join(gc, components);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3183 g_hash_table_destroy(components);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3184
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3185 yahoo_c_invite(gc, id, "Join my conference...", buddy->name);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3186 }
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3187
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3188 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
3189 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3190 PurpleConnection *gc;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3191 int presence_val = GPOINTER_TO_INT(data);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3192
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3193 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3194 gc = purple_account_get_connection(buddy->account);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3195
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3196 yahoo_friend_update_presence(gc, buddy->name, presence_val);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3197 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3198
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3199 static void yahoo_game(PurpleBlistNode *node, gpointer data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3200
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3201 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3202 PurpleConnection *gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3203
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3204 struct yahoo_data *yd;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3205 const char *game;
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3206 char *game2;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3207 char *t;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3208 char url[256];
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3209 YahooFriend *f;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3210
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3211 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
3212
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3213 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3214 gc = purple_account_get_connection(buddy->account);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3215 yd = (struct yahoo_data *) gc->proto_data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3216
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3217 f = yahoo_friend_find(gc, buddy->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3218 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3219 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3220
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3221 game = yahoo_friend_get_game(f);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3222 if (!game)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3223 return;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3224
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3225 t = game2 = g_strdup(strstr(game, "ante?room="));
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3226 while (*t && *t != '\t')
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3227 t++;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3228 *t = 0;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3229 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
3230 purple_notify_uri(gc, url);
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3231 g_free(game2);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3232 }
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3233
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3234 static char *yahoo_status_text(PurpleBuddy *b)
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3235 {
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3236 YahooFriend *f = NULL;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3237 const char *msg;
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11914
diff changeset
3238 char *msg2;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
3239
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3240 f = yahoo_friend_find(b->account->gc, b->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3241 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3242 return g_strdup(_("Not on server list"));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3243
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3244 switch (f->status) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3245 case YAHOO_STATUS_AVAILABLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3246 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3247 case YAHOO_STATUS_IDLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3248 if (f->idle == -1)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3249 return g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3250 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3251 case YAHOO_STATUS_CUSTOM:
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3252 if (!(msg = yahoo_friend_get_status_message(f)))
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3253 return NULL;
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11914
diff changeset
3254 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
3255 purple_util_chrreplace(msg2, '\n', ' ');
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11914
diff changeset
3256 return msg2;
9224
dbf5bfffe49b [gaim-migrate @ 10020]
Tim Ringenbach <marv@pidgin.im>
parents: 9221
diff changeset
3257
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3258 default:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3259 return g_strdup(yahoo_get_status_string(f->status));
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
3260 }
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3261 }
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3262
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3263 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
3264 {
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3265 YahooFriend *f;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3266 char *escaped;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3267 char *status = NULL;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3268 const char *presence = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3269
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3270 f = yahoo_friend_find(b->account->gc, b->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3271 if (!f)
8591
ae42ad1cd127 [gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents: 8589
diff changeset
3272 status = g_strdup_printf("\n%s", _("Not on server list"));
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3273 else {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3274 switch (f->status) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3275 case YAHOO_STATUS_CUSTOM:
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3276 if (!yahoo_friend_get_status_message(f))
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12945
diff changeset
3277 return;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3278 status = g_strdup(yahoo_friend_get_status_message(f));
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3279 break;
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3280 case YAHOO_STATUS_OFFLINE:
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3281 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3282 default:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3283 status = g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3284 break;
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4732
diff changeset
3285 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3286
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3287 switch (f->presence) {
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3288 case YAHOO_PRESENCE_ONLINE:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3289 presence = _("Appear Online");
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3290 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3291 case YAHOO_PRESENCE_PERM_OFFLINE:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3292 presence = _("Appear Permanently Offline");
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3293 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3294 case YAHOO_PRESENCE_DEFAULT:
12945
69f429d29451 [gaim-migrate @ 15298]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
3295 break;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3296 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3297 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
3298 break;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3299 }
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
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3302 if (status != NULL) {
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3303 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
3304 purple_notify_user_info_add_pair(user_info, _("Status"), escaped);
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3305 g_free(status);
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3306 g_free(escaped);
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3307 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3308
12945
69f429d29451 [gaim-migrate @ 15298]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
3309 if (presence != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3310 purple_notify_user_info_add_pair(user_info, _("Presence"), presence);
4729
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
3311 }
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
3312
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3313 static void yahoo_addbuddyfrommenu_cb(PurpleBlistNode *node, gpointer data)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3314 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3315 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3316 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3317
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3318 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
3319
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3320 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3321 gc = purple_account_get_connection(buddy->account);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3322
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3323 yahoo_add_buddy(gc, buddy, NULL);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3324 }
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3327 static void yahoo_chat_goto_menu(PurpleBlistNode *node, gpointer data)
6796
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
3328 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3329 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3330 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3331
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3332 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
3333
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3334 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3335 gc = purple_account_get_connection(buddy->account);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3336
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3337 yahoo_chat_goto(gc, buddy->name);
6796
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
3338 }
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
3339
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3340 static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) {
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3341 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3342 PurpleMenuAction *act;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3343 struct yahoo_data *yd = (struct yahoo_data *) gc->proto_data;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3344
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3345 if (yd->current_status == YAHOO_STATUS_INVISIBLE) {
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3346 if (f->presence != YAHOO_PRESENCE_ONLINE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3347 act = purple_menu_action_new(_("Appear Online"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3348 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3349 GINT_TO_POINTER(YAHOO_PRESENCE_ONLINE),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3350 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3351 m = g_list_append(m, act);
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3352 } else if (f->presence != YAHOO_PRESENCE_DEFAULT) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3353 act = purple_menu_action_new(_("Appear Offline"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3354 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3355 GINT_TO_POINTER(YAHOO_PRESENCE_DEFAULT),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3356 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3357 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3358 }
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
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3361 if (f->presence == YAHOO_PRESENCE_PERM_OFFLINE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3362 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
3363 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3364 GINT_TO_POINTER(YAHOO_PRESENCE_DEFAULT),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3365 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3366 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3367 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3368 act = purple_menu_action_new(_("Appear Permanently Offline"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3369 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3370 GINT_TO_POINTER(YAHOO_PRESENCE_PERM_OFFLINE),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3371 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3372 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3373 }
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 return m;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3376 }
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3377
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3378 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
3379 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3380 PurpleBuddy *b = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3381 PurpleConnection *gc = b->account->gc;
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3382
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3383 yahoo_doodle_initiate(gc, b->name);
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3384 }
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3385
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3386 static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3387 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3388 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3389 PurpleMenuAction *act;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3390
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3391 PurpleConnection *gc = purple_account_get_connection(buddy->account);
9370
0e1f9854bb0c [gaim-migrate @ 10178]
Tim Ringenbach <marv@pidgin.im>
parents: 9369
diff changeset
3392 struct yahoo_data *yd = gc->proto_data;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3393 static char buf2[1024];
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3394 YahooFriend *f;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3395
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3396 f = yahoo_friend_find(gc, buddy->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3397
9370
0e1f9854bb0c [gaim-migrate @ 10178]
Tim Ringenbach <marv@pidgin.im>
parents: 9369
diff changeset
3398 if (!f && !yd->wm) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3399 act = purple_menu_action_new(_("Add Buddy"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3400 PURPLE_CALLBACK(yahoo_addbuddyfrommenu_cb),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3401 NULL, NULL);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3402 m = g_list_append(m, act);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3403
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3404 return m;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3405
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
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3408 if (f && f->status != YAHOO_STATUS_OFFLINE) {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3409 if (!yd->wm) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3410 act = purple_menu_action_new(_("Join in Chat"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3411 PURPLE_CALLBACK(yahoo_chat_goto_menu),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3412 NULL, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3413 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3414 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3415
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3416 act = purple_menu_action_new(_("Initiate Conference"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3417 PURPLE_CALLBACK(yahoo_initiate_conference),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3418 NULL, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3419 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3420
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3421 if (yahoo_friend_get_game(f)) {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3422 const char *game = yahoo_friend_get_game(f);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3423 char *room;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3424 char *t;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3425
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3426 if ((room = strstr(game, "&follow="))) {/* skip ahead to the url */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3427 while (*room && *room != '\t') /* skip to the tab */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3428 room++;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3429 t = room++; /* room as now at the name */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3430 while (*t != '\n')
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3431 t++; /* replace the \n with a space */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3432 *t = ' ';
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3433 g_snprintf(buf2, sizeof buf2, "%s", room);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3434
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3435 act = purple_menu_action_new(buf2,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3436 PURPLE_CALLBACK(yahoo_game),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3437 NULL, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3438 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3439 }
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 if (f) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3444 act = purple_menu_action_new(_("Presence Settings"), NULL, NULL,
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3445 build_presence_submenu(f, gc));
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3446 m = g_list_append(m, act);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3447 }
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3448
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3449 if (f) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3450 act = purple_menu_action_new(_("Start Doodling"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3451 PURPLE_CALLBACK(yahoo_doodle_blist_node),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3452 NULL, NULL);
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3453 m = g_list_append(m, act);
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3454 }
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3455
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3456 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3457 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3458
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3459 static GList *yahoo_blist_node_menu(PurpleBlistNode *node)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3460 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3461 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3462 return yahoo_buddy_menu((PurpleBuddy *) node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3463 } else {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3464 return NULL;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3465 }
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
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3468 static void yahoo_act_id(PurpleConnection *gc, const char *entry)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3469 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3470 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3471
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3472 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
3473 yahoo_packet_hash_str(pkt, 3, entry);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3474 yahoo_packet_send_and_free(pkt, yd);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3475
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3476 purple_connection_set_display_name(gc, entry);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3477 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3478
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
3479 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
3480 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
3481 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
3482 {
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 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
3484 gboolean set_cookie = 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
3485 char *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
3486
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
3487 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(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
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 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
3490 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
3491 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
3492 /* 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
3493 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
3494 "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
3495 ".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
3496 "&.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
3497 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
3498 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
3499 }
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
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 if (!set_cookie) {
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 struct yahoo_data *yd = gc->proto_data;
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19716
diff changeset
3503 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
3504 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
3505 }
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
3506
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 /* 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
3508 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
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 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
3511 }
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
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 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
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 /* 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
3517 /* 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
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 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
3520 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
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 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
3523 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
3524 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
3525 "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
3526 "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
3527 "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
3528 "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
3529 "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
3530 yd->cookie_t, yd->cookie_y);
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
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 url_data = purple_util_fetch_url_request(base_url, 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
3533 "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
3534 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
3535
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
3536 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
3537
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
3538 if (url_data == 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
3539 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
3540 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
3541 "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
3542 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
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
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 }
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
3546
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
3547
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3548 static void yahoo_show_act_id(PurplePluginAction *action)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3549 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3550 PurpleConnection *gc = (PurpleConnection *) action->context;
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3551 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
3552 purple_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3553 _("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
3554 _("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
3555 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3556 gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3557 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3558
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3559 static void yahoo_show_chat_goto(PurplePluginAction *action)
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3560 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3561 PurpleConnection *gc = (PurpleConnection *) action->context;
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3562 purple_request_input(gc, NULL, _("Join whom in chat?"), NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8620
diff changeset
3563 "", FALSE, FALSE, NULL,
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3564 _("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
3565 _("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
3566 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3567 gc);
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3568 }
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3569
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3570 static GList *yahoo_actions(PurplePlugin *plugin, gpointer context) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3571 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3572 PurplePluginAction *act;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3573
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3574 act = purple_plugin_action_new(_("Activate ID..."),
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3575 yahoo_show_act_id);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3576 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3577
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3578 act = purple_plugin_action_new(_("Join User in Chat..."),
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3579 yahoo_show_chat_goto);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3580 m = g_list_append(m, act);
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3581
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
3582 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
3583 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
3584 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
3585 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
3586
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3587 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3588 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3589
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3590 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
3591 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3592 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3593 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
3594 char *msg = yahoo_html_to_codes(what);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3595 char *msg2;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3596 gboolean utf8 = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3597 PurpleWhiteboard *wb;
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3598 int ret = 1;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
3599 YahooFriend *f = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3600
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3601 msg2 = yahoo_string_encode(gc, msg, &utf8);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3602
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3603 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
3604 if ((f = yahoo_friend_find(gc, who)) && f->protocol)
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
3605 yahoo_packet_hash_int(pkt, 241, f->protocol);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
3606
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3607 if (utf8)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3608 yahoo_packet_hash_str(pkt, 97, "1");
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3609 yahoo_packet_hash_str(pkt, 14, msg2);
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3610
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3611 /*
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3612 * IMVironment.
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3613 *
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3614 * 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
3615 * 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
3616 *
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3617 * Otherwise attempt to use the same IMVironment as the remote user,
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3618 * just so that we don't inadvertantly reset their IMVironment back
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3619 * to nothing.
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3620 *
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3621 * If they have no set an IMVironment, then use the default.
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3622 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3623 wb = purple_whiteboard_get_session(gc->account, who);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
3624 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
3625 yahoo_packet_hash_str(pkt, 63, DOODLE_IMV_KEY);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
3626 else
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3627 {
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3628 const char *imv;
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3629 imv = g_hash_table_lookup(yd->imvironments, who);
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3630 if (imv != NULL)
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3631 yahoo_packet_hash_str(pkt, 63, imv);
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3632 else
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3633 yahoo_packet_hash_str(pkt, 63, ";0");
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3634 }
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3635
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3636 yahoo_packet_hash_str(pkt, 64, "0"); /* no idea */
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3637 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
3638 if (!yd->picture_url)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3639 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
3640 else
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3641 yahoo_packet_hash_str(pkt, 206, "2");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3642
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3643 /* 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
3644 if ((YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt)) <= 2000)
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3645 yahoo_packet_send(pkt, yd);
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3646 else
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3647 ret = -E2BIG;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3648
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3649 yahoo_packet_free(pkt);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3650
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3651 g_free(msg);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3652 g_free(msg2);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3653
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3654 return ret;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3655 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3656
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3657 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
3658 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3659 struct yahoo_data *yd = gc->proto_data;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3660 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
3661 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
3662 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3663 5, who, 1002, "1");
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3664
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3665 yahoo_packet_send_and_free(pkt, yd);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3666
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
3667 return 0;
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
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3670 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
3671 {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3672 YahooFriend *f = value;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3673 if (f && f->presence == YAHOO_PRESENCE_ONLINE)
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3674 f->presence = YAHOO_PRESENCE_DEFAULT;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3675 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3676
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3677 static void yahoo_set_status(PurpleAccount *account, PurpleStatus *status)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3678 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3679 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3680 PurplePresence *presence;
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3681 struct yahoo_data *yd;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3682 struct yahoo_packet *pkt;
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3683 int old_status;
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3684 const char *msg = NULL;
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3685 char *tmp = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3686 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
3687 gboolean utf8 = TRUE;
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3688
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3689 if (!purple_status_is_active(status))
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3690 return;
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3691
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3692 gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3693 presence = purple_status_get_presence(status);
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3694 yd = (struct yahoo_data *)gc->proto_data;
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3695 old_status = yd->current_status;
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3696
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3697 yd->current_status = get_yahoo_status_from_purple_status(status);
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3698
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3699 if (yd->current_status == YAHOO_STATUS_CUSTOM)
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3700 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3701 msg = purple_status_get_attr_string(status, "message");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3702
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3703 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
3704 tmp = yahoo_string_encode(gc, msg, &utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3705 conv_msg = purple_markup_strip_html(tmp);
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3706 g_free(tmp);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3707 } else {
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3708 if ((msg == NULL) || (*msg == '\0'))
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3709 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
3710 tmp = yahoo_string_encode(gc, msg, &utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3711 conv_msg = purple_markup_strip_html(tmp);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3712 g_free(tmp);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3713 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3714 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3715
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3716 if (yd->current_status == YAHOO_STATUS_INVISIBLE) {
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3717 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
3718 yahoo_packet_hash_str(pkt, 13, "2");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3719 yahoo_packet_send_and_free(pkt, yd);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3720
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3721 return;
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3722 }
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3723
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3724 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
3725 yahoo_packet_hash_int(pkt, 10, yd->current_status);
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
3726
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3727 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
3728 yahoo_packet_hash_str(pkt, 97, utf8 ? "1" : 0);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3729 yahoo_packet_hash_str(pkt, 19, conv_msg);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3730 } else {
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3731 yahoo_packet_hash_str(pkt, 19, "");
10373
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
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3734 g_free(conv_msg);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3735
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3736 if (purple_presence_is_idle(presence))
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3737 yahoo_packet_hash_str(pkt, 47, "2");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3738 else if (!purple_status_is_available(status))
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3739 yahoo_packet_hash_str(pkt, 47, "1");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3740
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3741 yahoo_packet_send_and_free(pkt, yd);
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3742
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3743 if (old_status == YAHOO_STATUS_INVISIBLE) {
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3744 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
3745 yahoo_packet_hash_str(pkt, 13, "1");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3746 yahoo_packet_send_and_free(pkt, yd);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3747
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3748 /* Any per-session presence settings are removed */
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3749 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
3750
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3751 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3752 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3753
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3754 static void yahoo_set_idle(PurpleConnection *gc, int idle)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3755 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3756 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3757 struct yahoo_packet *pkt = NULL;
8503
08a06c098df6 [gaim-migrate @ 9239]
Tim Ringenbach <marv@pidgin.im>
parents: 8482
diff changeset
3758 char *msg = NULL, *msg2 = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3759 PurpleStatus *status = NULL;
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3760
13688
240e5b90adb4 [gaim-migrate @ 16089]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13559
diff changeset
3761 if (idle && yd->current_status != YAHOO_STATUS_CUSTOM)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3762 yd->current_status = YAHOO_STATUS_IDLE;
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3763 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
3764 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
3765 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
3766 }
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3767
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3768 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
3769
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3770 yahoo_packet_hash_int(pkt, 10, yd->current_status);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3771 if (yd->current_status == YAHOO_STATUS_CUSTOM) {
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3772 const char *tmp;
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3773 if (status == NULL)
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 tmp = purple_status_get_attr_string(status, "message");
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3776 if (tmp != NULL) {
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3777 msg = yahoo_string_encode(gc, tmp, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3778 msg2 = purple_markup_strip_html(msg);
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3779 yahoo_packet_hash_str(pkt, 19, msg2);
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3780 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3781 /* 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
3782 * 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
3783 yahoo_packet_hash_str(pkt, 19, _("Away"));
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3784 }
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
3785 } else {
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3786 yahoo_packet_hash_str(pkt, 19, "");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3787 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3788
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3789 if (idle)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3790 yahoo_packet_hash_str(pkt, 47, "2");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3791 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
3792 yahoo_packet_hash_str(pkt, 47, "1");
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3793
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3794 yahoo_packet_send_and_free(pkt, yd);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3795
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3796 g_free(msg);
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3797 g_free(msg2);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3798 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3799
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3800 static GList *yahoo_status_types(PurpleAccount *account)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3801 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3802 PurpleStatusType *type;
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3803 GList *types = NULL;
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3804
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3805 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
3806 NULL, TRUE, TRUE, FALSE,
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3807 "message", _("Message"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3808 purple_value_new(PURPLE_TYPE_STRING), NULL);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3809 types = g_list_append(types, type);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3810
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3811 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
3812 NULL, TRUE, TRUE, FALSE,
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3813 "message", _("Message"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3814 purple_value_new(PURPLE_TYPE_STRING), NULL);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3815 types = g_list_append(types, type);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3816
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3817 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
3818 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3819
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3820 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
3821 types = g_list_append(types, type);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3822
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3823 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
3824 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3825
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3826 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
3827 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3828
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3829 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
3830 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3831
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3832 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
3833 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3834
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3835 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
3836 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3837
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3838 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
3839 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3840
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3841 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
3842 types = g_list_append(types, type);
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3843
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
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_INVISIBLE, YAHOO_STATUS_TYPE_INVISIBLE, NULL, TRUE);
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3846 types = g_list_append(types, type);
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
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_OFFLINE, YAHOO_STATUS_TYPE_OFFLINE, NULL, TRUE);
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12645
diff changeset
3849 types = g_list_append(types, type);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12645
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_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
3852 types = g_list_append(types, type);
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
3853
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3854 return types;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3855 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3856
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3857 static void yahoo_keepalive(PurpleConnection *gc)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3858 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3859 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3860 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
3861 yahoo_packet_send_and_free(pkt, yd);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3862
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3863 if (!yd->chat_online)
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3864 return;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3865
9376
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3866 if (yd->wm) {
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3867 ycht_chat_send_keepalive(yd->ycht);
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3868 return;
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3869 }
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3870
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3871 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
3872 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
3873 yahoo_packet_send_and_free(pkt, yd);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3874 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3875
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3876 /* XXX - What's the deal with PurpleGroup *foo? */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3877 static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *foo)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3878 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3879 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3880 struct yahoo_packet *pkt;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3881 PurpleGroup *g;
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
3882 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
3883 char *group2;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3884 YahooFriend *f;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3885
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3886 if (!yd->logged_in)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3887 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3888
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3889 if (!yahoo_privacy_check(gc, purple_buddy_get_name(buddy)))
10963
8011e6bc10b5 [gaim-migrate @ 12768]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10944
diff changeset
3890 return;
8011e6bc10b5 [gaim-migrate @ 12768]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10944
diff changeset
3891
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3892 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
3893
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3894 if (foo)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3895 group = foo->name;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3896 if (!group) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3897 g = purple_buddy_get_group(buddy);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3898 if (g)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3899 group = g->name;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3900 else
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3901 group = "Buddies";
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3902 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3903
7829
86a709c24689 [gaim-migrate @ 8481]
Ethan Blanton <elb@pidgin.im>
parents: 7827
diff changeset
3904 group2 = yahoo_string_encode(gc, group, NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3905 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
3906 yahoo_packet_hash(pkt, "ssssssssss",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3907 14, "",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3908 65, group2,
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3909 97, "1",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3910 1, purple_connection_get_display_name(gc),
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3911 302, "319",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3912 300, "319",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3913 7, buddy->name,
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3914 334, "0",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3915 301, "319",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3916 303, "319"
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3917 );
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3918 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
3919 yahoo_packet_hash_int(pkt, 241, f->protocol);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3920 yahoo_packet_send_and_free(pkt, yd);
7829
86a709c24689 [gaim-migrate @ 8481]
Ethan Blanton <elb@pidgin.im>
parents: 7827
diff changeset
3921 g_free(group2);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3922 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3923
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3924 static void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3925 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3926 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
6795
396b24cfeeb6 [gaim-migrate @ 7334]
Herman Bloggs <herman@bluedigits.com>
parents: 6793
diff changeset
3927 struct yahoo_packet *pkt;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3928 GSList *buddies, *l;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3929 PurpleGroup *g;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3930 gboolean remove = TRUE;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3931 char *cg;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3932
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
3933 if (!(yahoo_friend_find(gc, buddy->name)))
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3934 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3935
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3936 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
3937 for (l = buddies; l; l = l->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3938 g = purple_buddy_get_group(l->data);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3939 if (purple_utf8_strcasecmp(group->name, g->name)) {
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3940 remove = FALSE;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3941 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3942 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3943 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3944
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3945 g_slist_free(buddies);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3946
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3947 if (remove)
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3948 g_hash_table_remove(yd->friends, buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3949
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3950 cg = yahoo_string_encode(gc, group->name, NULL);
6795
396b24cfeeb6 [gaim-migrate @ 7334]
Herman Bloggs <herman@bluedigits.com>
parents: 6793
diff changeset
3951 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
3952 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
3953 7, buddy->name, 65, cg);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3954 yahoo_packet_send_and_free(pkt, yd);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3955 g_free(cg);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3956 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3957
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3958 static void yahoo_add_deny(PurpleConnection *gc, const char *who) {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3959 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3960 struct yahoo_packet *pkt;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3961
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3962 if (!yd->logged_in)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3963 return;
8057
1b3bd2942b2b [gaim-migrate @ 8743]
Sean Egan <seanegan@pidgin.im>
parents: 8046
diff changeset
3964 /* It seems to work better without this */
1b3bd2942b2b [gaim-migrate @ 8743]
Sean Egan <seanegan@pidgin.im>
parents: 8046
diff changeset
3965
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3966 /* if (gc->account->perm_deny != 4)
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3967 return; */
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3968
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3969 if (!who || who[0] == '\0')
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3970 return;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3971
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3972 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
3973 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
3974 7, who, 13, "1");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3975 yahoo_packet_send_and_free(pkt, yd);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3976 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3977
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3978 static void yahoo_rem_deny(PurpleConnection *gc, const char *who) {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3979 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3980 struct yahoo_packet *pkt;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3981
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3982 if (!yd->logged_in)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3983 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3984
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3985 if (!who || who[0] == '\0')
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3986 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3987
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3988 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
3989 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
3990 yahoo_packet_send_and_free(pkt, yd);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3991 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3992
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3993 static void yahoo_set_permit_deny(PurpleConnection *gc) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3994 PurpleAccount *acct;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3995 GSList *deny;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3996
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3997 acct = gc->account;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3998
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3999 switch (acct->perm_deny) {
10105
774d58172341 [gaim-migrate @ 11135]
Tim Ringenbach <marv@pidgin.im>
parents: 10070
diff changeset
4000 /* privacy 1 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4001 case PURPLE_PRIVACY_ALLOW_ALL:
10143
4c6356719734 [gaim-migrate @ 11214]
Tim Ringenbach <marv@pidgin.im>
parents: 10141
diff changeset
4002 for (deny = acct->deny;deny;deny = deny->next)
4c6356719734 [gaim-migrate @ 11214]
Tim Ringenbach <marv@pidgin.im>
parents: 10141
diff changeset
4003 yahoo_rem_deny(gc, deny->data);
4c6356719734 [gaim-migrate @ 11214]
Tim Ringenbach <marv@pidgin.im>
parents: 10141
diff changeset
4004 break;
10105
774d58172341 [gaim-migrate @ 11135]
Tim Ringenbach <marv@pidgin.im>
parents: 10070
diff changeset
4005 /* privacy 3 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4006 case PURPLE_PRIVACY_ALLOW_USERS:
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4007 for (deny = acct->deny;deny;deny = deny->next)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4008 yahoo_rem_deny(gc, deny->data);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4009 break;
10105
774d58172341 [gaim-migrate @ 11135]
Tim Ringenbach <marv@pidgin.im>
parents: 10070
diff changeset
4010 /* privacy 5 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4011 case PURPLE_PRIVACY_ALLOW_BUDDYLIST:
10105
774d58172341 [gaim-migrate @ 11135]
Tim Ringenbach <marv@pidgin.im>
parents: 10070
diff changeset
4012 /* privacy 4 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4013 case PURPLE_PRIVACY_DENY_USERS:
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4014 for (deny = acct->deny;deny;deny = deny->next)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4015 yahoo_add_deny(gc, deny->data);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4016 break;
10105
774d58172341 [gaim-migrate @ 11135]
Tim Ringenbach <marv@pidgin.im>
parents: 10070
diff changeset
4017 /* privacy 2 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4018 case PURPLE_PRIVACY_DENY_ALL:
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4019 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4020 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4021 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4022 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4023
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4024 static gboolean yahoo_unload_plugin(PurplePlugin *plugin)
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4025 {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4026 yahoo_dest_colorht();
11033
dc68e074f10d [gaim-migrate @ 12919]
Etan Reisner <deryni@pidgin.im>
parents: 10992
diff changeset
4027
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4028 return TRUE;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4029 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4030
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4031 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
4032 const char *old_group, const char *new_group)
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4033 {
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4034 struct yahoo_data *yd = gc->proto_data;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4035 struct yahoo_packet *pkt;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4036 char *gpn, *gpo;
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4037
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4038 /* Step 0: If they aren't on the server list anyway,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4039 * don't bother letting the server know.
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4040 */
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
4041 if (!yahoo_friend_find(gc, who))
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4042 return;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4043
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4044 /* If old and new are the same, we would probably
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4045 * end up deleting the buddy, which would be bad.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4046 * This might happen because of the charset conversation.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4047 */
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4048 gpn = yahoo_string_encode(gc, new_group, NULL);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4049 gpo = yahoo_string_encode(gc, old_group, NULL);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4050 if (!strcmp(gpn, gpo)) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4051 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4052 g_free(gpo);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4053 return;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4054 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4055
19329
2acabedbaa3e Allow you to move your Yahoo! buddies between groups again.
Tim Ringenbach <marv@pidgin.im>
parents: 19064
diff changeset
4056 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
4057 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
4058 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
4059 "240", 303, "240");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
4060 yahoo_packet_send_and_free(pkt, yd);
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4061
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4062 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4063 g_free(gpo);
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4064 }
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4065
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4066 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
4067 PurpleGroup *group, GList *moved_buddies)
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4068 {
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4069 struct yahoo_data *yd = gc->proto_data;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4070 struct yahoo_packet *pkt;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4071 char *gpn, *gpo;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4072
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
4073 gpn = yahoo_string_encode(gc, group->name, NULL);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
4074 gpo = yahoo_string_encode(gc, old_name, NULL);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4075 if (!strcmp(gpn, gpo)) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4076 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4077 g_free(gpo);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4078 return;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4079 }
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4080
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4081 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
4082 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
4083 65, gpo, 67, gpn);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
4084 yahoo_packet_send_and_free(pkt, yd);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4085 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4086 g_free(gpo);
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4087 }
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4088
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
4089 /********************************* Commands **********************************/
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
4090
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4091 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4092 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
4093 PurpleAccount *account = purple_conversation_get_account(c);
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4094
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4095 if (*args && args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4096 return PURPLE_CMD_RET_FAILED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4097
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4098 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
4099
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4100 return PURPLE_CMD_RET_OK;
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4101 }
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4102
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4103 static PurplePlugin *my_protocol = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4104
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4105 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4106 yahoopurple_cmd_chat_join(PurpleConversation *conv, const char *cmd,
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4107 char **args, char **error, void *data)
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4108 {
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4109 GHashTable *comp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4110 PurpleConnection *gc;
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4111 struct yahoo_data *yd;
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4112 int id;
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4113
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4114 if (!args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4115 return PURPLE_CMD_RET_FAILED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4116
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4117 gc = purple_conversation_get_gc(conv);
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4118 yd = gc->proto_data;
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4119 id = yd->conf_id;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4120 purple_debug(PURPLE_DEBUG_INFO, "yahoo",
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4121 "Trying to join %s \n", args[0]);
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4122
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4123 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
4124 g_hash_table_replace(comp, g_strdup("room"),
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4125 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
4126 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
4127
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4128 yahoo_c_join(gc, comp);
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4129
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4130 g_hash_table_destroy(comp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4131 return PURPLE_CMD_RET_OK;
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4132 }
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4133
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4134 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4135 yahoopurple_cmd_chat_list(PurpleConversation *conv, const char *cmd,
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4136 char **args, char **error, void *data)
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4137 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4138 PurpleAccount *account = purple_conversation_get_account(conv);
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4139 if (*args && args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4140 return PURPLE_CMD_RET_FAILED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4141 purple_roomlist_show_with_account(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4142 return PURPLE_CMD_RET_OK;
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4143 }
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4144
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4145 static gboolean yahoo_offline_message(const PurpleBuddy *buddy)
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4146 {
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4147 return TRUE;
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4148 }
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
4149
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4150 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
4151 {
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4152 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
4153
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
4154 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
4155 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
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 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
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 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
4160 "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
4161 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
4162
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4163 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
4164 }
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4165
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4166 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
4167 {
19643
1794c23309d3 In MSN prpl, use attention API. Can be disabled by undefining
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19642
diff changeset
4168 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
4169
1794c23309d3 In MSN prpl, use attention API. Can be disabled by undefining
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19642
diff changeset
4170 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
4171 /* 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
4172 /* 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
4173 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
4174 _("%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
4175 }
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4176
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4177 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
4178 }
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4179
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4180 /************************** Plugin Initialization ****************************/
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4181 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4182 yahoopurple_register_commands(void)
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4183 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4184 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
4185 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4186 PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4187 "prpl-yahoo", yahoopurple_cmd_chat_join,
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4188 _("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
4189 purple_cmd_register("list", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4190 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4191 PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4192 "prpl-yahoo", yahoopurple_cmd_chat_list,
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4193 _("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
4194 purple_cmd_register("buzz", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4195 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
4196 "prpl-yahoo", yahoopurple_cmd_buzz,
12318
942b7c089acb [gaim-migrate @ 14622]
Richard Laager <rlaager@pidgin.im>
parents: 12243
diff changeset
4197 _("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
4198 purple_cmd_register("doodle", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4199 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
4200 "prpl-yahoo", yahoo_doodle_purple_cmd_start,
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4201 _("doodle: Request user to start a Doodle session"), NULL);
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4202 }
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4203
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4204 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
4205 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4206 PurpleAccount *acct = NULL;
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4207
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4208 /* 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
4209 if (acct_id) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4210 acct = purple_accounts_find(acct_id, prpl);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4211 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
4212 acct = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4213 } else { /* Otherwise find an active account for the protocol */
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
4214 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
4215 while (l) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4216 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
4217 && 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
4218 acct = l->data;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4219 break;
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 l = l->next;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4222 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4223 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4224
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4225 return acct;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4226 }
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 /* 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
4229 * 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
4230 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
4231 {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4232 char **retval = user_data;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4233
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4234 if (value == NULL && *retval == NULL) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4235 *retval = key;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4236 }
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
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4239 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
4240 {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4241 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
4242 PurpleAccount *acct;
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4243
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4244 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
4245 return FALSE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4246
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4247 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
4248
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4249 if (!acct)
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4250 return FALSE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4251
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4252 /* 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
4253 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
4254 char *sname = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4255 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
4256 if (sname) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4257 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
4258
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4259 PurpleConversation *conv = purple_find_conversation_with_account(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4260 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
4261 if (conv == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4262 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
4263 purple_conversation_present(conv);
15685
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 if (message) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4266 /* Spaces are encoded as '+' */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4267 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
4268 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
4269 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4270 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4271 /*else
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4272 **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
4273 * 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
4274 pidgindialogs_im();*/
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4275
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4276 return TRUE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4277 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4278 /* ymsgr:Chat?roomname */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4279 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
4280 char *rname = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4281 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
4282 if (rname) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4283 /* 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
4284 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
4285 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
4286 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
4287 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4288 /*else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4289 ** 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
4290 pidgin_blist_joinchat_show(); */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4291
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4292 return TRUE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4293 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4294 /* ymsgr:AddFriend?name */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4295 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
4296 char *name = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4297 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
4298 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
4299 return TRUE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4300 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4301
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4302 return FALSE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4303 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4304
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4305 static PurpleWhiteboardPrplOps yahoo_whiteboard_prpl_ops =
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4306 {
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4307 yahoo_doodle_start,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4308 yahoo_doodle_end,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4309 yahoo_doodle_get_dimensions,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4310 NULL,
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
4311 yahoo_doodle_get_brush,
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
4312 yahoo_doodle_set_brush,
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4313 yahoo_doodle_send_draw_list,
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4314 yahoo_doodle_clear,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4315
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4316 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4317 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4318 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4319 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4320 NULL
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4321 };
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4322
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4323 static PurplePluginProtocolInfo prpl_info =
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4324 {
9308
4ea759d72d37 [gaim-migrate @ 10116]
Sean Egan <seanegan@pidgin.im>
parents: 9306
diff changeset
4325 OPT_PROTO_MAIL_CHECK | OPT_PROTO_CHAT_TOPIC,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4326 NULL, /* user_splits */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4327 NULL, /* protocol_options */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4328 {"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
4329 yahoo_list_icon,
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
4330 yahoo_list_emblem,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4331 yahoo_status_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4332 yahoo_tooltip_text,
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
4333 yahoo_status_types,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
4334 yahoo_blist_node_menu,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4335 yahoo_c_info,
9768
318bcd935ca5 [gaim-migrate @ 10636]
Luke Schierer <lschiere@pidgin.im>
parents: 9757
diff changeset
4336 yahoo_c_info_defaults,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4337 yahoo_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4338 yahoo_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4339 yahoo_send_im,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4340 NULL, /* set info */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4341 yahoo_send_typing,
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
4342 yahoo_get_info,
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
4343 yahoo_set_status,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4344 yahoo_set_idle,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4345 NULL, /* change_passwd*/
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4346 yahoo_add_buddy,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4347 NULL, /* add_buddies */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4348 yahoo_remove_buddy,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4349 NULL, /*remove_buddies */
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
4350 yahoo_add_permit,
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4351 yahoo_add_deny,
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
4352 yahoo_rem_permit,
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4353 yahoo_rem_deny,
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4354 yahoo_set_permit_deny,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4355 yahoo_c_join,
8562
7e73676d1772 [gaim-migrate @ 9306]
Christopher O'Brien <siege@pidgin.im>
parents: 8503
diff changeset
4356 NULL, /* reject chat invite */
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9888
diff changeset
4357 yahoo_get_chat_name,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4358 yahoo_c_invite,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4359 yahoo_c_leave,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4360 NULL, /* chat whisper */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4361 yahoo_c_send,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4362 yahoo_keepalive,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4363 NULL, /* register_user */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4364 NULL, /* get_cb_info */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4365 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
4366 yahoo_update_alias, /* alias_buddy */
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4367 yahoo_change_buddys_group,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4368 yahoo_rename_group,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4369 NULL, /* buddy_free */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4370 NULL, /* convo_closed */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4371 purple_normalize_nocase, /* normalize */
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
4372 yahoo_set_buddy_icon,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4373 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
4374 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
4375 NULL, /* set_chat_topic */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
4376 NULL, /* find_blist_chat */
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
4377 yahoo_roomlist_get_list,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
4378 yahoo_roomlist_cancel,
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9410
diff changeset
4379 yahoo_roomlist_expand_category,
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
4380 NULL, /* can_receive_file */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4381 yahoo_send_file,
12143
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12138
diff changeset
4382 yahoo_new_xfer,
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4383 yahoo_offline_message, /* offline_message */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12595
diff changeset
4384 &yahoo_whiteboard_prpl_ops,
15185
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 15181
diff changeset
4385 NULL, /* send_raw */
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 15181
diff changeset
4386 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
4387 NULL, /* unregister_user */
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4388
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4389 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
4390 yahoo_attention_types,
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4391
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4392 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4393 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4394 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4395
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4396 static PurplePluginInfo info =
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4397 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4398 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4399 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4400 PURPLE_MINOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4401 PURPLE_PLUGIN_PROTOCOL, /**< type */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4402 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4403 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4404 NULL, /**< dependencies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4405 PURPLE_PRIORITY_DEFAULT, /**< priority */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4406 "prpl-yahoo", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4407 "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
4408 DISPLAY_VERSION, /**< version */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4409 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4410 N_("Yahoo Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4411 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4412 N_("Yahoo Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4413 NULL, /**< author */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4414 PURPLE_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4415 NULL, /**< load */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4416 yahoo_unload_plugin, /**< unload */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4417 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4418 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8950
diff changeset
4419 &prpl_info, /**< extra_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8950
diff changeset
4420 NULL,
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4421 yahoo_actions,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4422
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4423 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4424 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4425 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4426 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4427 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4428 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4429
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4430 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4431 init_plugin(PurplePlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4432 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4433 PurpleAccountOption *option;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4434
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4435 option = purple_account_option_bool_new(_("Yahoo Japan"), "yahoojp", FALSE);
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_string_new(_("Pager server"), "server", YAHOO_PAGER_HOST);
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);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
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(_("Japan Pager server"), "serverjp", YAHOOJP_PAGER_HOST);
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4442 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
4443
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4444 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
4445 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
4446
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4447 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
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(_("Japan file transfer server"), "xferjp_host", YAHOOJP_XFER_HOST);
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4451 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
4452
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4453 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
4454 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
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(_("Chat room locale"), "room_list_locale", YAHOO_ROOMLIST_LOCALE);
11043
763427cecd21 [gaim-migrate @ 12957]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11033
diff changeset
4457 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
4458
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4459 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
4460 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
4461
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4462 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
4463 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
4464
4c0fe0512e73 [gaim-migrate @ 16971]
Tim Ringenbach <marv@pidgin.im>
parents: 14346
diff changeset
4465
11043
763427cecd21 [gaim-migrate @ 12957]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11033
diff changeset
4466 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4467 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
4468 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
4469
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4470 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
4471 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
4472
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4473 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
4474 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
4475 #endif
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
4476
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4477 my_protocol = plugin;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4478 yahoopurple_register_commands();
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4479 yahoo_init_colorht();
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4480
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4481 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
4482 PURPLE_CALLBACK(yahoo_uri_handler), NULL);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4483 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4484
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4485 PURPLE_INIT_PLUGIN(yahoo, init_plugin, info);

mercurial