libpurple/protocols/qq/buddy_opt.c

Fri, 04 Sep 2009 23:07:49 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 04 Sep 2009 23:07:49 +0000
changeset 28501
c5d4eeeb122c
parent 27703
243978fd6eec
child 28981
4e3922ab4844
permissions
-rw-r--r--

Add newline at end of debug messages.

13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
1 /**
15087
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14691
diff changeset
2 * @file buddy_opt.c
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
15087
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14691
diff changeset
7 * to list here. Please refer to the COPYRIGHT file distributed with this
78879d4adf13 [gaim-migrate @ 17807]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14691
diff changeset
8 * source distribution.
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
9 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
13 * (at your option) any later version.
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
14 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
18 * GNU General Public License for more details.
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
19 *
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
21 * 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: 19097
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
23 */
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
24
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
25 #include "debug.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
26 #include "internal.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
27 #include "notify.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
28 #include "request.h"
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
29 #include "privacy.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
30
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
31 #include "buddy_info.h"
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
32 #include "buddy_list.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
33 #include "buddy_opt.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
34 #include "char_conv.h"
24340
36ceebf026a0 patch 20080922 from ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24337
diff changeset
35 #include "qq_define.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
36 #include "im.h"
23950
a974649cdb89 2008.08.02 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23193
diff changeset
37 #include "qq_base.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
38 #include "packet_parse.h"
23192
2f00b04db5cb patch-04-tcp-pending
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23190
diff changeset
39 #include "qq_network.h"
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
40 #include "utils.h"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
41
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
42 #define PURPLE_GROUP_QQ_FORMAT "QQ (%s)"
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
43
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
44 #define QQ_REMOVE_SELF_REPLY_OK 0x00
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
45
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
46 enum {
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
47 QQ_MY_AUTH_APPROVE = 0x30, /* ASCII value of "0" */
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
48 QQ_MY_AUTH_REJECT = 0x31, /* ASCII value of "1" */
25105
fe13c190ca13 Remove the commas at the end of enumerator lists. This resolves warnings
Florian Quèze <florian@instantbird.org>
parents: 25028
diff changeset
49 QQ_MY_AUTH_REQUEST = 0x32 /* ASCII value of "2" */
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
50 };
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
51
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
52 typedef struct _qq_buddy_req {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
53 PurpleConnection *gc;
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
54 guint32 uid;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
55 guint8 *auth;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
56 guint8 auth_len;
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
57 } qq_buddy_req;
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
58
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
59 void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
60 guint8 *auth, guint8 auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
61
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
62 static void buddy_req_free(qq_buddy_req *add_req)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
63 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
64 g_return_if_fail(add_req != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
65 if (add_req->auth) g_free(add_req->auth);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
66 g_free(add_req);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
67 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
68
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
69 static void buddy_req_cancel_cb(qq_buddy_req *add_req, const gchar *msg)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
70 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
71 g_return_if_fail(add_req != NULL);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
72 buddy_req_free(add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
73 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
74
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
75 PurpleGroup *qq_group_find_or_new(const gchar *group_name)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
76 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
77 PurpleGroup *g;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
78
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
79 g_return_val_if_fail(group_name != NULL, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
80
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
81 g = purple_find_group(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
82 if (g == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
83 g = purple_group_new(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
84 purple_blist_add_group(g, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
85 purple_debug_warning("QQ", "Add new group: %s\n", group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
86 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
87
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
88 return g;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
89 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
90
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
91 static qq_buddy_data *qq_buddy_data_new(guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
92 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
93 qq_buddy_data *bd = g_new0(qq_buddy_data, 1);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
94 memset(bd, 0, sizeof(qq_buddy_data));
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
95 bd->uid = uid;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
96 bd->status = QQ_BUDDY_OFFLINE;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
97 return bd;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
98 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
99
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
100 qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
101 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
102 gchar *who;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
103 PurpleBuddy *buddy;
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
104 qq_buddy_data *bd;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
105
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
106 g_return_val_if_fail(gc != NULL, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
107
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
108 who = uid_to_purple_name(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
109 if (who == NULL) return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
110 buddy = purple_find_buddy(purple_connection_get_account(gc), who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
111 g_free(who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
112
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
113 if (buddy == NULL) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
114 purple_debug_error("QQ", "Can not find purple buddy of %u\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
115 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
116 }
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
117
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
118 if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
119 purple_debug_error("QQ", "Can not find buddy data of %u\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
120 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
121 }
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
122 return bd;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
123 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
124
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
125 void qq_buddy_data_free(qq_buddy_data *bd)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
126 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
127 g_return_if_fail(bd != NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
128
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
129 if (bd->nickname) g_free(bd->nickname);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
130 g_free(bd);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
131 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
132
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
133 /* create purple buddy without data and display with no-auth icon */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
134 PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
135 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
136 PurpleBuddy *buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
137 PurpleGroup *group;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
138 gchar *who;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
139 gchar *group_name;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
140
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
141 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
142
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
143 group_name = g_strdup_printf(PURPLE_GROUP_QQ_FORMAT,
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
144 purple_account_get_username(gc->account));
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
145 group = qq_group_find_or_new(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
146 if (group == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
147 purple_debug_error("QQ", "Failed creating group %s\n", group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
148 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
149 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
150
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
151 purple_debug_info("QQ", "Add new purple buddy: [%u]\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
152 who = uid_to_purple_name(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
153 buddy = purple_buddy_new(gc->account, who, NULL); /* alias is NULL */
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
154 purple_buddy_set_protocol_data(buddy, NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
155
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
156 g_free(who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
157
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
158 purple_blist_add_buddy(buddy, NULL, group, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
159
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
160 g_free(group_name);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
161
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
162 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
163 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
164
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
165 static void qq_buddy_free(PurpleBuddy *buddy)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
166 {
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
167 qq_buddy_data *bd;
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
168
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
169 g_return_if_fail(buddy);
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
170
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
171 if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
172 qq_buddy_data_free(bd);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
173 }
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
174 purple_buddy_set_protocol_data(buddy, NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
175 purple_blist_remove_buddy(buddy);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
176 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
177
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
178 PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
179 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
180 PurpleBuddy *buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
181 gchar *who;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
182
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
183 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
184
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
185 who = uid_to_purple_name(uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
186 buddy = purple_find_buddy(gc->account, who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
187 g_free(who);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
188 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
189 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
190
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
191 PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
192 {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
193 PurpleBuddy *buddy;
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
194 qq_buddy_data *bd;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
195
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
196 g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
197
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
198 buddy = qq_buddy_find(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
199 if (buddy == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
200 buddy = qq_buddy_new(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
201 if (buddy == NULL) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
202 return NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
203 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
204 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
205
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
206 if (purple_buddy_get_protocol_data(buddy) != NULL) {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
207 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
208 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
209
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
210 bd = qq_buddy_data_new(uid);
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
211 purple_buddy_set_protocol_data(buddy, bd);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
212 return buddy;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
213 }
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
214
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
215 /* send packet to remove a buddy from my buddy list */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
216 static void request_remove_buddy(PurpleConnection *gc, guint32 uid)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
217 {
14581
5c4b594933f6 [gaim-migrate @ 17239]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14381
diff changeset
218 gchar uid_str[11];
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
219 gint bytes;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
220
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
221 g_return_if_fail(uid > 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
222
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
223 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
224 bytes = strlen(uid_str);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
225 qq_send_cmd_mess(gc, QQ_CMD_REMOVE_BUDDY, (guint8 *) uid_str, bytes, 0, uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
226 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
227
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
228 static void request_remove_buddy_ex(PurpleConnection *gc,
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
229 guint32 uid, guint8 *auth, guint8 auth_len)
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
230 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
231 gint bytes;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
232 guint8 *raw_data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
233 gchar uid_str[16];
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
234
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
235 g_return_if_fail(uid != 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
236 g_return_if_fail(auth != NULL && auth_len > 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
237
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
238 raw_data = g_newa(guint8, auth_len + sizeof(uid_str) );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
239 bytes = 0;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
240 bytes += qq_put8(raw_data + bytes, auth_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
241 bytes += qq_putdata(raw_data + bytes, auth, auth_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
242
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
243 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
244 bytes += qq_putdata(raw_data + bytes, (guint8 *)uid_str, strlen(uid_str));
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
245
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
246 qq_send_cmd_mess(gc, QQ_CMD_REMOVE_BUDDY, raw_data, bytes, 0, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
247 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
248
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
249 void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, guint32 uid)
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
250 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
251 guint8 raw_data[16];
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
252 gint bytes;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
253
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
254 g_return_if_fail(uid > 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
255 bytes = 0;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
256 bytes += qq_put8(raw_data + bytes, cmd);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
257 bytes += qq_put16(raw_data + bytes, sub_cmd);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
258 bytes += qq_put32(raw_data + bytes, uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
259
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
260 qq_send_cmd_mess(gc, QQ_CMD_AUTH_CODE, raw_data, bytes, 0, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
261 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
262
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
263 void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
264 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
265 qq_data *qd;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
266 gint bytes;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
267 guint8 cmd, reply;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
268 guint16 sub_cmd;
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
269 guint8 *code = NULL;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
270 guint16 code_len = 0;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
271
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
272 g_return_if_fail(data != NULL && data_len != 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
273 g_return_if_fail(uid != 0);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
274
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
275 qd = (qq_data *) gc->proto_data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
276
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
277 qq_show_packet("qq_process_auth_code", data, data_len);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
278 bytes = 0;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
279 bytes += qq_get8(&cmd, data + bytes);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
280 bytes += qq_get16(&sub_cmd, data + bytes);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
281 bytes += qq_get8(&reply, data + bytes);
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
282 g_return_if_fail(bytes + 2 <= data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
283
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
284 bytes += qq_get16(&code_len, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
285 g_return_if_fail(code_len > 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
286 g_return_if_fail(bytes + code_len <= data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
287 code = g_newa(guint8, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
288 bytes += qq_getdata(code, code_len, data + bytes);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
289
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
290 if (cmd == QQ_AUTH_INFO_BUDDY && sub_cmd == QQ_AUTH_INFO_REMOVE_BUDDY) {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
291 request_remove_buddy_ex(gc, uid, code, code_len);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
292 return;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
293 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
294 if (cmd == QQ_AUTH_INFO_BUDDY && sub_cmd == QQ_AUTH_INFO_ADD_BUDDY) {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
295 add_buddy_authorize_input(gc, uid, code, code_len);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
296 return;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
297 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
298 purple_debug_info("QQ", "Got auth info cmd 0x%x, sub 0x%x, reply 0x%x\n",
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
299 cmd, sub_cmd, reply);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
300 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
301
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
302 static void add_buddy_question_cb(qq_buddy_req *add_req, const gchar *text)
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
303 {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
304 g_return_if_fail(add_req != NULL);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
305 if (add_req->gc == NULL || add_req->uid == 0) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
306 buddy_req_free(add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
307 return;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
308 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
309
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
310 qq_request_question(add_req->gc, QQ_QUESTION_ANSWER, add_req->uid, NULL, text);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
311 buddy_req_free(add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
312 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
313
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
314 static void add_buddy_question_input(PurpleConnection *gc, guint32 uid, gchar *question)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
315 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
316 gchar *who, *msg;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
317 qq_buddy_req *add_req;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
318 g_return_if_fail(uid != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
319
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
320 add_req = g_new0(qq_buddy_req, 1);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
321 add_req->gc = gc;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
322 add_req->uid = uid;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
323 add_req->auth = NULL;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
324 add_req->auth_len = 0;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
325
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
326 who = uid_to_purple_name(uid);
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 25028
diff changeset
327 msg = g_strdup_printf(_("%u requires verification"), uid);
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 25028
diff changeset
328 purple_request_input(gc, _("Add buddy question"), msg,
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 25028
diff changeset
329 _("Enter answer here"),
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
330 NULL,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
331 TRUE, FALSE, NULL,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
332 _("Send"), G_CALLBACK(add_buddy_question_cb),
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
333 _("Cancel"), G_CALLBACK(buddy_req_cancel_cb),
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
334 purple_connection_get_account(gc), who, NULL,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
335 add_req);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
336
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
337 g_free(msg);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
338 g_free(who);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
339 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
340
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
341 void qq_request_question(PurpleConnection *gc,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
342 guint8 cmd, guint32 uid, const gchar *question_utf8, const gchar *answer_utf8)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
343 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
344 guint8 raw_data[MAX_PACKET_SIZE - 16];
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
345 gint bytes;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
346
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
347 g_return_if_fail(uid > 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
348 bytes = 0;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
349 bytes += qq_put8(raw_data + bytes, cmd);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
350 if (cmd == QQ_QUESTION_GET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
351 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
352 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
353 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
354 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
355 if (cmd == QQ_QUESTION_SET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
356 bytes += qq_put_vstr(raw_data + bytes, question_utf8, QQ_CHARSET_DEFAULT);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
357 bytes += qq_put_vstr(raw_data + bytes, answer_utf8, QQ_CHARSET_DEFAULT);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
358 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
359 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
360 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
361 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
362 /* Unknow 2 bytes, 0x(00 01) */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
363 bytes += qq_put8(raw_data + bytes, 0x00);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
364 bytes += qq_put8(raw_data + bytes, 0x01);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
365 g_return_if_fail(uid != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
366 bytes += qq_put32(raw_data + bytes, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
367 if (cmd == QQ_QUESTION_REQUEST) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
368 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
369 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
370 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
371 bytes += qq_put_vstr(raw_data + bytes, answer_utf8, QQ_CHARSET_DEFAULT);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
372 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
373 qq_send_cmd_mess(gc, QQ_CMD_BUDDY_QUESTION, raw_data, bytes, 0, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
374 return;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
375 }
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
376
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
377 static void request_add_buddy_by_question(PurpleConnection *gc, guint32 uid,
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
378 guint8 *code, guint16 code_len)
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
379 {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
380 guint8 raw_data[MAX_PACKET_SIZE - 16];
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
381 gint bytes = 0;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
382
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
383 g_return_if_fail(uid != 0 && code_len > 0);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
384
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
385 bytes = 0;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
386 bytes += qq_put8(raw_data + bytes, 0x10);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
387 bytes += qq_put32(raw_data + bytes, uid);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
388 bytes += qq_put16(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
389
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
390 bytes += qq_put8(raw_data + bytes, 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
391 bytes += qq_put8(raw_data + bytes, 0); /* no auth code */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
392
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
393 bytes += qq_put16(raw_data + bytes, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
394 bytes += qq_putdata(raw_data + bytes, code, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
395
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
396 bytes += qq_put8(raw_data + bytes, 1); /* ALLOW ADD ME FLAG */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
397 bytes += qq_put8(raw_data + bytes, 0); /* group number? */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
398 qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH_EX, raw_data, bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
399 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
400
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
401 void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
402 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
403 qq_data *qd;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
404 gint bytes;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
405 guint8 cmd, reply;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
406 gchar *question, *answer;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
407 guint16 code_len;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
408 guint8 *code;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
409
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
410 g_return_if_fail(data != NULL && data_len != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
411
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
412 qd = (qq_data *) gc->proto_data;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
413
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
414 qq_show_packet("qq_process_question", data, data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
415 bytes = 0;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
416 bytes += qq_get8(&cmd, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
417 if (cmd == QQ_QUESTION_GET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
418 bytes += qq_get_vstr(&question, QQ_CHARSET_DEFAULT, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
419 bytes += qq_get_vstr(&answer, QQ_CHARSET_DEFAULT, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
420 purple_debug_info("QQ", "Get buddy adding Q&A:\n%s\n%s\n", question, answer);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
421 g_free(question);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
422 g_free(answer);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
423 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
424 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
425 if (cmd == QQ_QUESTION_SET) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
426 bytes += qq_get8(&reply, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
427 if (reply == 0) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
428 purple_debug_info("QQ", "Successed setting Q&A\n");
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
429 } else {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
430 purple_debug_warning("QQ", "Failed setting Q&A, reply %d\n", reply);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
431 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
432 return;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
433 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
434
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
435 g_return_if_fail(uid != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
436 bytes += 2; /* skip 2 bytes, 0x(00 01)*/
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
437 if (cmd == QQ_QUESTION_REQUEST) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
438 bytes += qq_get8(&reply, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
439 if (reply == 0x01) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
440 purple_debug_warning("QQ", "Failed getting question, reply %d\n", reply);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
441 return;
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
442 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
443 bytes += qq_get_vstr(&question, QQ_CHARSET_DEFAULT, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
444 purple_debug_info("QQ", "Get buddy question:\n%s\n", question);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
445 add_buddy_question_input(gc, uid, question);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
446 g_free(question);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
447 return;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
448 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
449
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
450 if (cmd == QQ_QUESTION_ANSWER) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
451 bytes += qq_get8(&reply, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
452 if (reply == 0x01) {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
453 purple_notify_error(gc, _("Add Buddy"), _("Invalid answer."), NULL);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
454 return;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
455 }
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
456 bytes += qq_get16(&code_len, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
457 g_return_if_fail(code_len > 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
458 g_return_if_fail(bytes + code_len <= data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
459
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
460 code = g_newa(guint8, code_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
461 bytes += qq_getdata(code, code_len, data + bytes);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
462 request_add_buddy_by_question(gc, uid, code, code_len);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
463 return;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
464 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
465
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
466 g_return_if_reached();
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
467 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
468
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
469 /* try to remove myself from someone's buddy list */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
470 static void request_buddy_remove_me(PurpleConnection *gc, guint32 uid)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
471 {
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
472 guint8 raw_data[16] = {0};
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
473 gint bytes = 0;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
474
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
475 g_return_if_fail(uid > 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
476
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
477 bytes += qq_put32(raw_data + bytes, uid);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
478
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
479 qq_send_cmd_mess(gc, QQ_CMD_REMOVE_ME, raw_data, bytes, 0, uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
480 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
481
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
482 /* try to add a buddy without authentication */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
483 static void request_add_buddy_no_auth(PurpleConnection *gc, guint32 uid)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
484 {
14581
5c4b594933f6 [gaim-migrate @ 17239]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14381
diff changeset
485 gchar uid_str[11];
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
486
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
487 g_return_if_fail(uid > 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
488
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
489 /* we need to send the ascii code of this uid to qq server */
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
490 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
491 qq_send_cmd_mess(gc, QQ_CMD_ADD_BUDDY_NO_AUTH,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
492 (guint8 *) uid_str, strlen(uid_str), 0, uid);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
493 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
494
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
495 static void request_add_buddy_no_auth_ex(PurpleConnection *gc, guint32 uid)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
496 {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
497 guint bytes;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
498 guint8 raw_data[16];
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
499
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
500 g_return_if_fail(uid != 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
501
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
502 bytes = 0;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
503 bytes += qq_put32(raw_data + bytes, uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
504 qq_send_cmd_mess(gc, QQ_CMD_ADD_BUDDY_NO_AUTH_EX, raw_data, bytes, 0, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
505 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
506
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
507 /* this buddy needs authentication, text conversion is done at lowest level */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
508 static void request_add_buddy_auth(PurpleConnection *gc, guint32 uid, const gchar response, const gchar *text)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
509 {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
510 guint8 raw_data[MAX_PACKET_SIZE - 16];
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
511 gint bytes;
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
512 gchar *msg, uid_str[11];
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
513 guint8 bar;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
514
14691
efb5fd0a34b7 [gaim-migrate @ 17375]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 14581
diff changeset
515 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
516
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
517 g_snprintf(uid_str, sizeof(uid_str), "%u", uid);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
518 bar = 0x1f;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
519
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
520 bytes = 0;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
521 bytes += qq_putdata(raw_data + bytes, (guint8 *) uid_str, strlen(uid_str));
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
522 bytes += qq_put8(raw_data + bytes, bar);
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
523 bytes += qq_put8(raw_data + bytes, response);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
524
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
525 if (text != NULL) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
526 msg = utf8_to_qq(text, QQ_CHARSET_DEFAULT);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
527 bytes += qq_put8(raw_data + bytes, bar);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
528 bytes += qq_putdata(raw_data + bytes, (guint8 *) msg, strlen(msg));
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
529 g_free(msg);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
530 }
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
531
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
532 qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH, raw_data, bytes);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
533 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
534
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
535 static void request_add_buddy_auth_ex(PurpleConnection *gc, guint32 uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
536 const gchar *text, guint8 *auth, guint8 auth_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
537 {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
538 guint8 raw_data[MAX_PACKET_SIZE - 16];
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
539 gint bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
540
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
541 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
542
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
543 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
544 bytes += qq_put8(raw_data + bytes, 0x02);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
545 bytes += qq_put32(raw_data + bytes, uid);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
546 bytes += qq_put16(raw_data + bytes, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
547
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
548 bytes += qq_put8(raw_data + bytes, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
549 if (auth == NULL || auth_len <= 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
550 bytes += qq_put8(raw_data + bytes, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
551 } else {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
552 bytes += qq_put8(raw_data + bytes, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
553 bytes += qq_putdata(raw_data + bytes, auth, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
554 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
555 bytes += qq_put8(raw_data + bytes, 1); /* ALLOW ADD ME FLAG */
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
556 bytes += qq_put8(raw_data + bytes, 0); /* group number? */
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
557 bytes += qq_put_vstr(raw_data + bytes, text, QQ_CHARSET_DEFAULT);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
558 qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH_EX, raw_data, bytes);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
559 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
560
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
561 void qq_process_add_buddy_auth_ex(PurpleConnection *gc, guint8 *data, gint data_len, guint32 ship32)
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
562 {
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
563 g_return_if_fail(data != NULL && data_len != 0);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
564
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
565 qq_show_packet("qq_process_question", data, data_len);
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
566 }
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
567
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
568 static void add_buddy_auth_cb(qq_buddy_req *add_req, const gchar *text)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
569 {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
570 qq_data *qd;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
571 g_return_if_fail(add_req != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
572 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
573 buddy_req_free(add_req);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
574 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
575 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
576
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
577 qd = (qq_data *)add_req->gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
578 if (qd->client_version > 2005) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
579 request_add_buddy_auth_ex(add_req->gc, add_req->uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
580 text, add_req->auth, add_req->auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
581 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
582 request_add_buddy_auth(add_req->gc, add_req->uid, QQ_MY_AUTH_REQUEST, text);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
583 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
584 buddy_req_free(add_req);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
585 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
586
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
587 /* the real packet to reject and request is sent from here */
24365
af3e4261a311 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24355
diff changeset
588 static void buddy_add_deny_reason_cb(qq_buddy_req *add_req, const gchar *reason)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
589 {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
590 g_return_if_fail(add_req != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
591 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
592 buddy_req_free(add_req);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
593 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
594 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
595
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
596 request_add_buddy_auth(add_req->gc, add_req->uid, QQ_MY_AUTH_REJECT, reason);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
597 buddy_req_free(add_req);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
598 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
599
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
600 static void buddy_add_deny_noreason_cb(qq_buddy_req *add_req)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
601 {
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
602 buddy_add_deny_reason_cb(add_req, NULL);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
603 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
604
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
605 /* we approve other's request of adding me as friend */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
606 static void buddy_add_authorize_cb(gpointer data)
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
607 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
608 qq_buddy_req *add_req = (qq_buddy_req *)data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
609
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
610 g_return_if_fail(add_req != NULL);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
611 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
612 buddy_req_free(add_req);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
613 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
614 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
615
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
616 request_add_buddy_auth(add_req->gc, add_req->uid, QQ_MY_AUTH_APPROVE, NULL);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
617 buddy_req_free(add_req);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
618 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
619
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
620 /* we reject other's request of adding me as friend */
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
621 static void buddy_add_deny_cb(gpointer data)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
622 {
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
623 qq_buddy_req *add_req = (qq_buddy_req *)data;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
624 gchar *who = uid_to_purple_name(add_req->uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
625 purple_request_input(add_req->gc, NULL, _("Authorization denied message:"),
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 25028
diff changeset
626 NULL, _("Sorry, you're not my style."), TRUE, FALSE, NULL,
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
627 _("OK"), G_CALLBACK(buddy_add_deny_reason_cb),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
628 _("Cancel"), G_CALLBACK(buddy_add_deny_noreason_cb),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
629 purple_connection_get_account(add_req->gc), who, NULL,
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
630 add_req);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
631 g_free(who);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
632 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
633
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
634 static void add_buddy_no_auth_cb(qq_buddy_req *add_req)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
635 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
636 qq_data *qd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
637 g_return_if_fail(add_req != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
638 if (add_req->gc == NULL || add_req->uid == 0) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
639 buddy_req_free(add_req);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
640 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
641 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
642
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
643 qd = (qq_data *) add_req->gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
644 if (qd->client_version > 2005) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
645 request_add_buddy_no_auth_ex(add_req->gc, add_req->uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
646 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
647 request_add_buddy_no_auth(add_req->gc, add_req->uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
648 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
649 buddy_req_free(add_req);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
650 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
651
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
652 void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
653 guint8 *auth, guint8 auth_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
654 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
655 gchar *who, *msg;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
656 qq_buddy_req *add_req;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
657 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
658
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
659 add_req = g_new0(qq_buddy_req, 1);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
660 add_req->gc = gc;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
661 add_req->uid = uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
662 add_req->auth = NULL;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
663 add_req->auth_len = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
664 if (auth != NULL && auth_len > 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
665 add_req->auth = g_new0(guint8, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
666 g_memmove(add_req->auth, auth, auth_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
667 add_req->auth_len = auth_len;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
668 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
669
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
670 who = uid_to_purple_name(uid);
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 25028
diff changeset
671 msg = g_strdup_printf(_("%u needs authorization"), uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
672 purple_request_input(gc, _("Add buddy authorize"), msg,
25114
b3244decdb40 String changes (a few of which I had already made, grumble grumble).
Mark Doliner <markdoliner@pidgin.im>
parents: 25028
diff changeset
673 _("Enter request here"),
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
674 _("Would you be my friend?"),
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
675 TRUE, FALSE, NULL,
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
676 _("Send"), G_CALLBACK(add_buddy_auth_cb),
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
677 _("Cancel"), G_CALLBACK(buddy_req_cancel_cb),
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
678 purple_connection_get_account(gc), who, NULL,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
679 add_req);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
680
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
681 g_free(msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
682 g_free(who);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
683 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
684
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
685 /* add a buddy and send packet to QQ server
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
686 * note that when purple load local cached buddy list into its blist
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
687 * it also calls this funtion, so we have to
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
688 * define qd->is_login=TRUE AFTER LOGIN */
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
689 void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
690 {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
691 qq_data *qd;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
692 guint32 uid;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
693
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
694 g_return_if_fail(NULL != gc && NULL != gc->proto_data);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
695 g_return_if_fail(buddy != NULL);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
696
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
697 qd = (qq_data *) gc->proto_data;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
698 if (!qd->is_login)
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
699 return; /* IMPORTANT ! */
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
700
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
701 uid = purple_name_to_uid(purple_buddy_get_name(buddy));
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
702 if (uid > 0) {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
703 if (qd->client_version > 2005) {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
704 request_add_buddy_no_auth_ex(gc, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
705 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
706 request_add_buddy_no_auth(gc, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
707 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
708 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
709 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
710
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
711 purple_notify_error(gc, _("QQ Buddy"), _("Add buddy"), _("Invalid QQ Number"));
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
712 if (buddy == NULL) {
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
713 return;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
714 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
715
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
716 purple_debug_info("QQ", "Remove buddy with invalid QQ number %u\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
717 qq_buddy_free(buddy);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
718 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
719
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
720 /* process reply to add_buddy_auth request */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
721 void qq_process_add_buddy_auth(guint8 *data, gint data_len, PurpleConnection *gc)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
722 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
723 qq_data *qd;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
724 gchar **segments, *msg_utf8;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
725
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
726 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
727
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
728 qd = (qq_data *) gc->proto_data;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
729
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
730 if (data[0] == '0') {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
731 purple_debug_info("QQ", "Reply OK for sending authorize\n");
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
732 return;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
733 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
734
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
735 if (NULL == (segments = split_data(data, data_len, "\x1f", 2))) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
736 purple_notify_error(gc, _("QQ Buddy"), _("Failed sending authorize"), NULL);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
737 return;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
738 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
739 msg_utf8 = qq_to_utf8(segments[1], QQ_CHARSET_DEFAULT);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
740 purple_notify_error(gc, _("QQ Buddy"), _("Failed sending authorize"), msg_utf8);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
741 g_free(msg_utf8);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
742 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
743
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
744 /* process the server reply for my request to remove a buddy */
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
745 void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
746 {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
747 PurpleBuddy *buddy = NULL;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
748 gchar *msg;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
749
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
750 g_return_if_fail(data != NULL && data_len != 0);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
751 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
752
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
753 buddy = qq_buddy_find(gc, uid);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
754 if (data[0] != 0) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
755 msg = g_strdup_printf(_("Failed removing buddy %u"), uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
756 purple_notify_info(gc, _("QQ Buddy"), msg, NULL);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
757 g_free(msg);
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
758 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
759
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
760 purple_debug_info("QQ", "Reply OK for removing buddy\n");
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
761 /* remove buddy again */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
762 if (buddy != NULL) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
763 qq_buddy_free(buddy);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
764 }
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
765 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
766
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
767 /* process the server reply for my request to remove myself from a buddy */
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
768 void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
769 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
770 qq_data *qd;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
771 gchar *msg;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
772
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
773 g_return_if_fail(data != NULL && data_len != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
774 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
775
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
776 if (data[0] == 0) {
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
777 purple_debug_info("QQ", "Reply OK for removing me from %u's buddy list\n", uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
778 return;
23190
ce258cadbd9e patch-02-fix-multiarch
SHiNE CsyFeK <csyfek@gmail.com>
parents: 22685
diff changeset
779 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
780 msg = g_strdup_printf(_("Failed removing me from %d's buddy list"), uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
781 purple_notify_info(gc, _("QQ Buddy"), msg, NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
782 g_free(msg);
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
783 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
784
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
785 void qq_process_add_buddy_no_auth(PurpleConnection *gc,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
786 guint8 *data, gint data_len, guint32 uid)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
787 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
788 qq_data *qd;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
789 gchar **segments;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
790 gchar *dest_uid, *reply;
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
791 PurpleBuddy *buddy;
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
792 qq_buddy_data *bd;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
793
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
794 g_return_if_fail(data != NULL && data_len != 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
795 g_return_if_fail(uid != 0);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
796
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
797 qd = (qq_data *) gc->proto_data;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
798
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
799 purple_debug_info("QQ", "Process buddy add for id [%u]\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
800 qq_show_packet("buddy_add_no_auth", data, data_len);
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
801
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
802 if (NULL == (segments = split_data(data, data_len, "\x1f", 2)))
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
803 return;
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
804
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
805 dest_uid = segments[0];
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
806 reply = segments[1];
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
807 if (strtoul(dest_uid, NULL, 10) != qd->uid) { /* should not happen */
28501
c5d4eeeb122c Add newline at end of debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27703
diff changeset
808 purple_debug_error("QQ", "Add buddy reply is to [%s], not me!\n", dest_uid);
24018
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
809 g_strfreev(segments);
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
810 return;
91f0294f2377 2008.08.10 - csyfek <csyfek(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 23950
diff changeset
811 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
812
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
813 if (strtol(reply, NULL, 10) == 0) {
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
814 /* add OK */
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
815 qq_buddy_find_or_new(gc, uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
816
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
817 qq_request_buddy_info(gc, uid, 0, 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
818 if (qd->client_version >= 2007) {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
819 qq_request_get_level_2007(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
820 } else {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
821 qq_request_get_level(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
822 }
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
823 qq_request_get_buddies_online(gc, 0, 0);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
824
28501
c5d4eeeb122c Add newline at end of debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27703
diff changeset
825 purple_debug_info("QQ", "Successed adding into %u's buddy list\n", uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
826 g_strfreev(segments);
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
827 return;
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
828 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
829
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
830 /* need auth */
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
831 purple_debug_warning("QQ", "Failed adding buddy, need authorize\n");
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
832
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
833 buddy = qq_buddy_find(gc, uid);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
834 if (buddy == NULL) {
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
835 buddy = qq_buddy_new(gc, uid);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
836 }
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
837 if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
838 /* Not authorized now, free buddy data */
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
839 qq_buddy_data_free(bd);
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
840 purple_buddy_set_protocol_data(buddy, NULL);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
841 }
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
842
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
843 add_buddy_authorize_input(gc, uid, NULL, 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
844 g_strfreev(segments);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
845 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
846
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
847 void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc,
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
848 guint8 *data, gint data_len, guint32 uid)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
849 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
850 qq_data *qd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
851 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
852 guint32 dest_uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
853 guint8 reply;
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
854 guint8 auth_type;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
855
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
856 g_return_if_fail(data != NULL && data_len >= 5);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
857 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
858
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
859 qd = (qq_data *) gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
860
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
861 purple_debug_info("QQ", "Process buddy add no auth for id [%u]\n", uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
862 qq_show_packet("buddy_add_no_auth_ex", data, data_len);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
863
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
864 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
865 bytes += qq_get32(&dest_uid, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
866 bytes += qq_get8(&reply, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
867
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
868 g_return_if_fail(dest_uid == uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
869
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
870 if (reply == 0x99) {
28501
c5d4eeeb122c Add newline at end of debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27703
diff changeset
871 purple_debug_info("QQ", "Successfully added buddy %u\n", uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
872 qq_buddy_find_or_new(gc, uid);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
873
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
874 qq_request_buddy_info(gc, uid, 0, 0);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
875 if (qd->client_version >= 2007) {
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
876 qq_request_get_level_2007(gc, uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
877 } else {
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
878 qq_request_get_level(gc, uid);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
879 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
880 qq_request_get_buddies_online(gc, 0, 0);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
881 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
882 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
883
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
884 if (reply != 0) {
28501
c5d4eeeb122c Add newline at end of debug messages.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27703
diff changeset
885 purple_debug_info("QQ", "Failed adding buddy %u, Unknown reply 0x%02X\n",
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
886 uid, reply);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
887 }
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
888
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
889 /* need auth */
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
890 g_return_if_fail(data_len > bytes);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
891 bytes += qq_get8(&auth_type, data + bytes);
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
892 purple_debug_warning("QQ", "Adding buddy needs authorize 0x%02X\n", auth_type);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
893
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
894 switch (auth_type) {
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
895 case 0x00: /* no authorize */
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
896 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
897 case 0x01: /* authorize */
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
898 qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_ADD_BUDDY, uid);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
899 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
900 case 0x02: /* disable */
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
901 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
902 case 0x03: /* answer question */
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
903 qq_request_question(gc, QQ_QUESTION_REQUEST, uid, NULL, NULL);
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
904 break;
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
905 default:
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
906 g_return_if_reached();
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
907 break;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
908 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
909 return;
24348
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24344
diff changeset
910 }
1249d8b99aa9 2008.10.03 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24344
diff changeset
911
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
912 /* remove a buddy and send packet to QQ server accordingly */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
913 void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
914 {
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
915 qq_data *qd;
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
916 qq_buddy_data *bd;
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
917 guint32 uid;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
918
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
919 g_return_if_fail(gc != NULL && gc->proto_data != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
920 g_return_if_fail(buddy != NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
921
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
922 qd = (qq_data *) gc->proto_data;
24314
587e97c2b707 merge of 'd01a6b8ccfad536e692fa159a02583625596c4f5'
Daniel Atallah <datallah@pidgin.im>
parents: 24313
diff changeset
923 if (!qd->is_login)
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
924 return;
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
925
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
926 uid = purple_name_to_uid(purple_buddy_get_name(buddy));
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
927 if (uid > 0 && uid != qd->uid) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
928 if (qd->client_version > 2005) {
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
929 qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_REMOVE_BUDDY, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
930 } else {
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
931 request_remove_buddy(gc, uid);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
932 request_buddy_remove_me(gc, uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
933 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
934 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
935
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
936 if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
937 qq_buddy_data_free(bd);
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
938 purple_buddy_set_protocol_data(buddy, NULL);
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
939 } else {
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
940 purple_debug_warning("QQ", "Empty buddy data of %s\n", purple_buddy_get_name(buddy));
24354
dcb8e72dad63 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24352
diff changeset
941 }
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
942
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
943 /* Do not call purple_blist_remove_buddy,
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
944 * otherwise purple segmentation fault */
14083
2b68bb18a66c [gaim-migrate @ 16618]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents: 13932
diff changeset
945 }
13932
4d131bd2b40f [gaim-migrate @ 16340]
Mark Huetsch <markhuetsch@users.sourceforge.net>
parents:
diff changeset
946
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
947 static void buddy_add_input(PurpleConnection *gc, guint32 uid, gchar *reason)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
948 {
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
949 PurpleAccount *account = purple_connection_get_account(gc);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
950 qq_buddy_req *add_req;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
951 gchar *who;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
952
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
953 g_return_if_fail(uid != 0 && reason != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
954
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
955 purple_debug_info("QQ", "Buddy %u request adding, msg: %s\n", uid, reason);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
956
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
957 add_req = g_new0(qq_buddy_req, 1);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
958 add_req->gc = gc;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
959 add_req->uid = uid;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
960
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
961 if (purple_prefs_get_bool("/plugins/prpl/qq/auto_get_authorize_info")) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
962 qq_request_buddy_info(gc, add_req->uid, 0, QQ_BUDDY_INFO_DISPLAY);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
963 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
964 who = uid_to_purple_name(add_req->uid);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
965
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
966 purple_account_request_authorization(account,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
967 who, NULL,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
968 NULL, reason,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
969 purple_find_buddy(account, who) != NULL,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
970 buddy_add_authorize_cb,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
971 buddy_add_deny_cb,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
972 add_req);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
973
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
974 g_free(who);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
975 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
976
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
977 /* someone wants to add you to his buddy list */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
978 static void server_buddy_add_request(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
979 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
980 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
981 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
982 gchar *msg, *reason;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
983
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
984 g_return_if_fail(from != NULL && to != NULL);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
985 uid = strtoul(from, NULL, 10);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
986 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
987
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
988 if (purple_prefs_get_bool("/plugins/prpl/qq/auto_get_authorize_info")) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
989 qq_request_buddy_info(gc, uid, 0, QQ_BUDDY_INFO_DISPLAY);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
990 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
991
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
992 if (data_len <= 0) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
993 reason = g_strdup( _("No reason given") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
994 } else {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
995 msg = g_strndup((gchar *)data, data_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
996 reason = qq_to_utf8(msg, QQ_CHARSET_DEFAULT);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
997 if (reason == NULL) reason = g_strdup( _("Unknown reason") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
998 g_free(msg);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
999 }
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1000
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1001 buddy_add_input(gc, uid, reason);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1002 g_free(reason);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1003 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1004
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1005 void qq_process_buddy_check_code(PurpleConnection *gc, guint8 *data, gint data_len)
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1006 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1007 qq_data *qd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1008 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1009 guint8 cmd;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1010 guint8 reply;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1011 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1012 guint16 flag1, flag2;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1013
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1014 g_return_if_fail(data != NULL && data_len >= 5);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1015
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1016 qd = (qq_data *) gc->proto_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1017
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1018 qq_show_packet("buddy_check_code", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1019
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1020 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1021 bytes += qq_get8(&cmd, data + bytes); /* 0x03 */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1022 bytes += qq_get8(&reply, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1023
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1024 if (reply == 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1025 purple_debug_info("QQ", "Failed checking code\n");
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1026 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1027 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1028
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1029 bytes += qq_get32(&uid, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1030 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1031 bytes += qq_get16(&flag1, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1032 bytes += qq_get16(&flag2, data + bytes);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1033 purple_debug_info("QQ", "Check code reply Ok, uid %u, flag 0x%04X-0x%04X\n",
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1034 uid, flag1, flag2);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1035 return;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1036 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1037
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1038 static void request_buddy_check_code(PurpleConnection *gc,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1039 gchar *from, guint8 *code, gint code_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1040 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1041 guint8 *raw_data;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1042 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1043 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1044
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1045 g_return_if_fail(code != NULL && code_len > 0 && from != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1046
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1047 uid = strtoul(from, NULL, 10);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1048 raw_data = g_newa(guint8, code_len + 16);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1049 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1050 bytes += qq_put8(raw_data + bytes, 0x03);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1051 bytes += qq_put8(raw_data + bytes, 0x01);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1052 bytes += qq_put32(raw_data + bytes, uid);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1053 bytes += qq_put16(raw_data + bytes, code_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1054 bytes += qq_putdata(raw_data + bytes, code, code_len);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1055
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1056 qq_send_cmd(gc, QQ_CMD_BUDDY_CHECK_CODE, raw_data, bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1057 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1058
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1059 static gint server_buddy_check_code(PurpleConnection *gc,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1060 gchar *from, guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1061 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1062 gint bytes;
24370
982f5559baae 2008.10.27 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24369
diff changeset
1063 guint16 code_len;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1064 guint8 *code;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1065
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1066 g_return_val_if_fail(data != NULL && data_len > 0, 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1067
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1068 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1069 bytes += qq_get16(&code_len, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1070 if (code_len <= 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1071 purple_debug_info("QQ", "Server msg for buddy has no code\n");
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1072 return bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1073 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1074 if (bytes + code_len < data_len) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1075 purple_debug_error("QQ", "Code len error in server msg for buddy\n");
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1076 qq_show_packet("server_buddy_check_code", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1077 code_len = data_len - bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1078 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1079 code = g_newa(guint8, code_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1080 bytes += qq_getdata(code, code_len, data + bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1081
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1082 request_buddy_check_code(gc, from, code, code_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1083 return bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1084 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1085
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1086 static void server_buddy_add_request_ex(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1087 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1088 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1089 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1090 guint32 uid;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1091 gchar *msg;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1092 guint8 allow_reverse;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1093
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1094 g_return_if_fail(from != NULL && to != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1095 g_return_if_fail(data != NULL && data_len >= 3);
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1096 uid = strtoul(from, NULL, 10);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1097 g_return_if_fail(uid != 0);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1098
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1099 /* qq_show_packet("server_buddy_add_request_ex", data, data_len); */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1100
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1101 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1102 bytes += qq_get_vstr(&msg, QQ_CHARSET_DEFAULT, data+bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1103 bytes += qq_get8(&allow_reverse, data + bytes); /* allow_reverse = 0x01, allowed */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1104 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1105
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1106 if (strlen(msg) <= 0) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1107 g_free(msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1108 msg = g_strdup( _("No reason given") );
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1109 }
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1110 buddy_add_input(gc, uid, msg);
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1111 g_free(msg);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1112 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1113
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1114 /* when you are added by a person, QQ server will send sys message */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1115 static void server_buddy_added(PurpleConnection *gc, gchar *from, gchar *to,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1116 guint8 *data, gint data_len)
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1117 {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1118 PurpleAccount *account = purple_connection_get_account(gc);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1119 PurpleBuddy *buddy;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1120 guint32 uid;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1121 qq_buddy_req *add_req;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1122 gchar *who;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1123 gchar *primary;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1124
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1125 g_return_if_fail(from != NULL && to != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1126
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1127 uid = strtoul(from, NULL, 10);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1128 who = uid_to_purple_name(uid);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1129
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1130 buddy = purple_find_buddy(account, who);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1131 if (buddy != NULL) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1132 purple_account_notify_added(account, from, to, NULL, NULL);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1133 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1134
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1135 add_req = g_new0(qq_buddy_req, 1);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1136 add_req->gc = gc;
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1137 add_req->uid = uid; /* only need to get value */
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1138 primary = g_strdup_printf(_("You have been added by %s"), from);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1139 purple_request_action(gc, NULL, primary,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1140 _("Would you like to add him?"),
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1141 PURPLE_DEFAULT_ACTION_NONE,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1142 purple_connection_get_account(gc), who, NULL,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1143 add_req, 2,
24369
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1144 _("Add"), G_CALLBACK(add_buddy_no_auth_cb),
11eef9c1dae1 2008.10.22 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24368
diff changeset
1145 _("Cancel"), G_CALLBACK(buddy_req_cancel_cb));
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1146
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1147 g_free(who);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1148 g_free(primary);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1149 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1150
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1151 static void server_buddy_added_ex(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1152 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1153 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1154 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1155 guint8 allow_reverse;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1156 gchar *msg;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1157
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1158 g_return_if_fail(from != NULL && to != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1159 g_return_if_fail(data != NULL && data_len >= 3);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1160
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1161 qq_show_packet("server_buddy_added_ex", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1162
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1163 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1164 bytes += qq_get_vstr(&msg, QQ_CHARSET_DEFAULT, data+bytes); /* always empty msg */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1165 purple_debug_info("QQ", "Buddy added msg: %s\n", msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1166 bytes += qq_get8(&allow_reverse, data + bytes); /* allow_reverse = 0x01, allowed */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1167 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1168
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1169 g_free(msg);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1170 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1171
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1172 static void server_buddy_adding_ex(PurpleConnection *gc, gchar *from, gchar *to,
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1173 guint8 *data, gint data_len)
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1174 {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1175 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1176 guint8 allow_reverse;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1177
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1178 g_return_if_fail(from != NULL && to != NULL);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1179 g_return_if_fail(data != NULL && data_len >= 3);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1180
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1181 qq_show_packet("server_buddy_adding_ex", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1182
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1183 bytes = 0;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1184 bytes += qq_get8(&allow_reverse, data + bytes); /* allow_reverse = 0x01, allowed */
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1185 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1186 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1187
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1188 /* the buddy approves your request of adding him/her as your friend */
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1189 static void server_buddy_added_me(PurpleConnection *gc, gchar *from, gchar *to,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1190 guint8 *data, gint data_len)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1191 {
24341
02abffea97fe 2008.09.26 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24340
diff changeset
1192 PurpleAccount *account = purple_connection_get_account(gc);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1193 qq_data *qd;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1194 guint32 uid;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1195
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1196 g_return_if_fail(from != NULL && to != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1197
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1198 qd = (qq_data *) gc->proto_data;
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1199
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1200 uid = strtoul(from, NULL, 10);
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1201 g_return_if_fail(uid > 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1202
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1203 server_buddy_check_code(gc, from, data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1204
24355
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1205 qq_buddy_find_or_new(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1206 qq_request_buddy_info(gc, uid, 0, 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1207 qq_request_get_buddies_online(gc, 0, 0);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1208 if (qd->client_version >= 2007) {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1209 qq_request_get_level_2007(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1210 } else {
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1211 qq_request_get_level(gc, uid);
c9deccad8f3f 2008.10.07 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24354
diff changeset
1212 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1213
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1214 purple_account_notify_added(account, to, from, NULL, NULL);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1215 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1216
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1217 /* you are rejected by the person */
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1218 static void server_buddy_rejected_me(PurpleConnection *gc, gchar *from, gchar *to,
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1219 guint8 *data, gint data_len)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1220 {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1221 guint32 uid;
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1222 PurpleBuddy *buddy;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1223 gchar *msg, *msg_utf8;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1224 gint bytes;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1225 gchar **segments;
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1226 gchar *primary, *secondary;
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
1227 qq_buddy_data *bd;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1228
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1229 g_return_if_fail(from != NULL && to != NULL);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1230
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1231 qq_show_packet("server_buddy_rejected_me", data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1232
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1233 if (data_len <= 0) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1234 msg = g_strdup( _("No reason given") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1235 } else {
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1236 segments = g_strsplit((gchar *)data, "\x1f", 1);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1237 if (segments != NULL && segments[0] != NULL) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1238 msg = g_strdup(segments[0]);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1239 g_strfreev(segments);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1240 bytes = strlen(msg) + 1;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1241 if (bytes < data_len) {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1242 server_buddy_check_code(gc, from, data + bytes, data_len - bytes);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1243 }
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1244 } else {
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1245 msg = g_strdup( _("No reason given") );
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1246 }
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1247 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1248 msg_utf8 = qq_to_utf8(msg, QQ_CHARSET_DEFAULT);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1249 if (msg_utf8 == NULL) {
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1250 msg_utf8 = g_strdup( _("Unknown reason") );
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1251 }
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1252 g_free(msg);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1253
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1254 primary = g_strdup_printf(_("Rejected by %s"), from);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1255 secondary = g_strdup_printf(_("Message: %s"), msg_utf8);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1256
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1257 purple_notify_info(gc, _("QQ Buddy"), primary, secondary);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1258
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1259 g_free(msg_utf8);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1260 g_free(primary);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1261 g_free(secondary);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1262
25028
ecaeb08ebae8 Change QQ number to unsigned long
Hu Yong <ccpaging@gmail.com>
parents: 24370
diff changeset
1263 uid = strtoul(from, NULL, 10);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1264 g_return_if_fail(uid != 0);
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1265
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1266 buddy = qq_buddy_find(gc, uid);
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
1267 if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1268 /* Not authorized now, free buddy data */
24954
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
1269 qq_buddy_data_free(bd);
27e63ec24946 Finished struct hiding in bonjour and qq
Gary Kramlich <grim@reaperworld.com>
parents: 24370
diff changeset
1270 purple_buddy_set_protocol_data(buddy, NULL);
24366
ccfd4cba02a4 2008.10.10 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24365
diff changeset
1271 }
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1272 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1273
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1274 void qq_process_buddy_from_server(PurpleConnection *gc, int funct,
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1275 gchar *from, gchar *to, guint8 *data, gint data_len)
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1276 {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1277 switch (funct) {
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1278 case QQ_SERVER_BUDDY_ADDED:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1279 server_buddy_added(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1280 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1281 case QQ_SERVER_BUDDY_ADD_REQUEST:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1282 server_buddy_add_request(gc, from, to, data, data_len);
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1283 break;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1284 case QQ_SERVER_BUDDY_ADD_REQUEST_EX:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1285 server_buddy_add_request_ex(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1286 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1287 case QQ_SERVER_BUDDY_ADDED_ME:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1288 server_buddy_added_me(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1289 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1290 case QQ_SERVER_BUDDY_REJECTED_ME:
24367
80bead6c1577 2008.10.14 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24366
diff changeset
1291 server_buddy_rejected_me(gc, from, to, data, data_len);
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1292 break;
24368
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1293 case QQ_SERVER_BUDDY_ADDED_EX:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1294 server_buddy_added_ex(gc, from, to, data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1295 break;
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1296 case QQ_SERVER_BUDDY_ADDING_EX:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1297 case QQ_SERVER_BUDDY_ADDED_ANSWER:
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1298 server_buddy_adding_ex(gc, from, to, data, data_len);
4d20b95ce597 2008.10.20 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24367
diff changeset
1299 break;
24337
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1300 default:
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1301 purple_debug_warning("QQ", "Unknow buddy operate (%d) from server\n", funct);
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1302 break;
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1303 }
09fc304dae73 2008.09.19 - ccpaging <ccpaging(at)gmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents: 24314
diff changeset
1304 }

mercurial