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