Mon, 31 Mar 2003 07:19:46 +0000
[gaim-migrate @ 5250]
Buddy list editing.
Does this work? I don't know; I don't test things. It compiles though.
It probably does work though, because I'm perfect.
So, see, I did really terribly in school last semester (really terribly--
like, why didn't they kick me out terribly) and so I'm working really hard
to do well this semester (and I am so far :)). Anyway, that's why you may
have noticed I'm a bit slow with the development of late. In fact, I would
test and fix this stuff up, but I really need to work on an English paper,
so I figured it'd be best just to commit it as is and let Rob, Nathan, Chip
and the boys work out the kinks. Besides, I've had most of this code written
for weeks already.
Thank you all for your patience.
Oh, so there's now an Edit menu on your buddy list (which makes the minimum
buddy list width wider :-D) and here you'll find things with which to edit
your list and privacy, prefs and accounts. It should all be real intuitive.
Feel free to IM me if you want to talk about my paper.
| 2393 | 1 | /* |
| 2 | * gaim - Gadu-Gadu Protocol Plugin | |
| 4916 | 3 | * $Id: gg.c 5250 2003-03-31 07:19:46Z seanegan $ |
| 2393 | 4 | * |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
5 | * Copyright (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL> |
| 2393 | 6 | * |
| 7 | * This program is free software; you can redistribute it and/or modify | |
| 8 | * it under the terms of the GNU General Public License as published by | |
| 9 | * the Free Software Foundation; either version 2 of the License, or | |
| 10 | * (at your option) any later version. | |
| 11 | * | |
| 12 | * This program is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | * GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 18 | * along with this program; if not, write to the Free Software | |
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 20 | * | |
| 21 | */ | |
| 22 | ||
|
2541
0afd3aaba327
[gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2518
diff
changeset
|
23 | #ifdef HAVE_CONFIG_H |
| 2393 | 24 | #include <config.h> |
|
2541
0afd3aaba327
[gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2518
diff
changeset
|
25 | #endif |
| 2393 | 26 | |
| 3630 | 27 | #ifndef _WIN32 |
| 2393 | 28 | #include <netdb.h> |
| 29 | #include <unistd.h> | |
| 30 | #include <netinet/in.h> | |
| 31 | #include <arpa/inet.h> | |
| 3630 | 32 | #include <sys/socket.h> |
| 33 | #else | |
| 34 | #include <winsock.h> | |
| 35 | #endif | |
| 36 | ||
| 37 | #include <errno.h> | |
| 2393 | 38 | #include <fcntl.h> |
| 39 | #include <string.h> | |
| 40 | #include <stdlib.h> | |
| 41 | #include <stdio.h> | |
| 42 | #include <time.h> | |
| 43 | #include <sys/stat.h> | |
| 44 | #include <ctype.h> | |
| 45 | /* Library from EKG (Eksperymentalny Klient Gadu-Gadu) */ | |
| 46 | #include "libgg.h" | |
| 4608 | 47 | #include "gaim.h" |
| 2393 | 48 | #include "multi.h" |
|
4373
fb2ae2f5edd3
[gaim-migrate @ 4639]
Herman Bloggs <herman@bluedigits.com>
parents:
4349
diff
changeset
|
49 | #include "core.h" |
| 2393 | 50 | #include "prpl.h" |
| 51 | #include "proxy.h" | |
| 52 | ||
| 3630 | 53 | #ifdef _WIN32 |
| 54 | #include "win32dep.h" | |
| 55 | #endif | |
| 56 | ||
| 2393 | 57 | #define USEROPT_NICK 0 |
| 58 | ||
| 59 | #define AGG_BUF_LEN 1024 | |
| 60 | ||
| 61 | #define AGG_GENDER_NONE -1 | |
| 62 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
63 | #define AGG_PUBDIR_USERLIST_EXPORT_FORM "/appsvc/fmcontactsput.asp" |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
64 | #define AGG_PUBDIR_USERLIST_IMPORT_FORM "/appsvc/fmcontactsget.asp" |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
65 | #define AGG_PUBDIR_SEARCH_FORM "/appsvc/fmpubquery2.asp" |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
66 | #define AGG_REGISTER_DATA_FORM "/appsvc/fmregister.asp" |
| 2393 | 67 | #define AGG_PUBDIR_MAX_ENTRIES 200 |
| 68 | ||
| 69 | #define AGG_STATUS_AVAIL _("Available") | |
| 70 | #define AGG_STATUS_AVAIL_FRIENDS _("Available for friends only") | |
| 71 | #define AGG_STATUS_BUSY _("Away") | |
| 72 | #define AGG_STATUS_BUSY_FRIENDS _("Away for friends only") | |
| 73 | #define AGG_STATUS_INVISIBLE _("Invisible") | |
| 74 | #define AGG_STATUS_INVISIBLE_FRIENDS _("Invisible for friends only") | |
| 75 | #define AGG_STATUS_NOT_AVAIL _("Unavailable") | |
| 76 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
77 | #define AGG_HTTP_NONE 0 |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
78 | #define AGG_HTTP_SEARCH 1 |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
79 | #define AGG_HTTP_USERLIST_IMPORT 2 |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
80 | #define AGG_HTTP_USERLIST_EXPORT 3 |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
81 | #define AGG_HTTP_USERLIST_DELETE 4 |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
82 | #define AGG_HTTP_PASSWORD_CHANGE 5 |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
83 | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2423
diff
changeset
|
84 | #define UC_NORMAL 2 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2423
diff
changeset
|
85 | |
| 3630 | 86 | /* for win32 compatability */ |
| 87 | G_MODULE_IMPORT GSList *connections; | |
| 88 | ||
| 2393 | 89 | struct agg_data { |
| 90 | struct gg_session *sess; | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
91 | int own_status; |
| 2393 | 92 | }; |
| 93 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
94 | struct agg_http { |
| 2393 | 95 | struct gaim_connection *gc; |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
96 | gchar *request; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
97 | gchar *form; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
98 | gchar *host; |
| 2393 | 99 | int inpa; |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
100 | int type; |
| 2393 | 101 | }; |
| 102 | ||
| 103 | ||
| 3466 | 104 | static gchar *charset_convert(const gchar *locstr, const char *encsrc, const char *encdst) |
| 2393 | 105 | { |
| 4051 | 106 | return (g_convert (locstr, strlen (locstr), encdst, encsrc, NULL, NULL, NULL)); |
| 2393 | 107 | } |
| 108 | ||
| 3466 | 109 | static gboolean invalid_uin(const char *uin) |
| 2393 | 110 | { |
| 111 | unsigned long int res = strtol(uin, (char **)NULL, 10); | |
| 112 | if (res == LONG_MIN || res == LONG_MAX || res == 0) | |
| 113 | return TRUE; | |
| 114 | return FALSE; | |
| 115 | } | |
| 116 | ||
| 117 | static gint args_compare(gconstpointer a, gconstpointer b) | |
| 118 | { | |
| 4793 | 119 | return g_ascii_strcasecmp((const gchar *)a,(const gchar *)b); |
| 2393 | 120 | } |
| 121 | ||
| 122 | static gboolean allowed_uin(struct gaim_connection *gc, char *uin) | |
| 123 | { | |
| 4491 | 124 | switch (gc->account->permdeny) { |
| 2393 | 125 | case 1: |
| 126 | /* permit all, deny none */ | |
| 127 | return TRUE; | |
| 128 | break; | |
| 129 | case 2: | |
| 130 | /* deny all, permit none. */ | |
| 131 | return FALSE; | |
| 132 | break; | |
| 133 | case 3: | |
| 134 | /* permit some. */ | |
| 4491 | 135 | if (g_slist_find_custom(gc->account->permit, uin, args_compare)) |
| 2393 | 136 | return TRUE; |
| 137 | return FALSE; | |
| 138 | break; | |
| 139 | case 4: | |
| 140 | /* deny some. */ | |
| 4491 | 141 | if (g_slist_find_custom(gc->account->deny, uin, args_compare)) |
| 2393 | 142 | return FALSE; |
| 143 | return TRUE; | |
| 144 | break; | |
| 145 | default: | |
| 146 | return TRUE; | |
| 147 | break; | |
| 148 | } | |
| 149 | } | |
| 150 | ||
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
151 | static char *handle_errcode(struct gaim_connection *gc, int errcode) |
| 2393 | 152 | { |
| 153 | static char msg[AGG_BUF_LEN]; | |
| 154 | ||
| 155 | switch (errcode) { | |
| 156 | case GG_FAILURE_RESOLVING: | |
| 157 | g_snprintf(msg, sizeof(msg), _("Unable to resolve hostname.")); | |
| 158 | break; | |
| 159 | case GG_FAILURE_CONNECTING: | |
| 160 | g_snprintf(msg, sizeof(msg), _("Unable to connect to server.")); | |
| 161 | break; | |
| 162 | case GG_FAILURE_INVALID: | |
| 163 | g_snprintf(msg, sizeof(msg), _("Invalid response from server.")); | |
| 164 | break; | |
| 165 | case GG_FAILURE_READING: | |
| 166 | g_snprintf(msg, sizeof(msg), _("Error while reading from socket.")); | |
| 167 | break; | |
| 168 | case GG_FAILURE_WRITING: | |
| 3100 | 169 | g_snprintf(msg, sizeof(msg), _("Error while writing to socket.")); |
| 2393 | 170 | break; |
| 171 | case GG_FAILURE_PASSWORD: | |
| 3100 | 172 | g_snprintf(msg, sizeof(msg), _("Authentication failed.")); |
| 2393 | 173 | break; |
| 174 | default: | |
| 175 | g_snprintf(msg, sizeof(msg), _("Unknown Error Code.")); | |
| 176 | break; | |
| 177 | } | |
| 178 | ||
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
179 | hide_login_progress(gc, msg); |
| 2393 | 180 | |
| 181 | return msg; | |
| 182 | } | |
| 183 | ||
| 184 | static void agg_set_away(struct gaim_connection *gc, char *state, char *msg) | |
| 185 | { | |
| 186 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
187 | int status = gd->own_status; |
| 2393 | 188 | |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
189 | if (gc->away) { |
|
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
190 | g_free(gc->away); |
| 2393 | 191 | gc->away = NULL; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
192 | } |
| 2393 | 193 | |
| 4793 | 194 | if (!gaim_utf8_strcasecmp(state, AGG_STATUS_AVAIL)) |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
195 | status = GG_STATUS_AVAIL; |
| 4793 | 196 | else if (!gaim_utf8_strcasecmp(state, AGG_STATUS_AVAIL_FRIENDS)) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
197 | status = GG_STATUS_AVAIL | GG_STATUS_FRIENDS_MASK; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
198 | gc->away = g_strdup(""); |
| 4793 | 199 | } else if (!gaim_utf8_strcasecmp(state, AGG_STATUS_BUSY)) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
200 | status = GG_STATUS_BUSY; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
201 | gc->away = g_strdup(""); |
| 4793 | 202 | } else if (!gaim_utf8_strcasecmp(state, AGG_STATUS_BUSY_FRIENDS)) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
203 | status = GG_STATUS_BUSY | GG_STATUS_FRIENDS_MASK; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
204 | gc->away = g_strdup(""); |
| 4793 | 205 | } else if (!gaim_utf8_strcasecmp(state, AGG_STATUS_INVISIBLE)) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
206 | status = GG_STATUS_INVISIBLE; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
207 | gc->away = g_strdup(""); |
| 4793 | 208 | } else if (!gaim_utf8_strcasecmp(state, AGG_STATUS_INVISIBLE_FRIENDS)) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
209 | status = GG_STATUS_INVISIBLE | GG_STATUS_FRIENDS_MASK; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
210 | gc->away = g_strdup(""); |
| 4793 | 211 | } else if (!gaim_utf8_strcasecmp(state, AGG_STATUS_NOT_AVAIL)) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
212 | status = GG_STATUS_NOT_AVAIL; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
213 | gc->away = g_strdup(""); |
| 4793 | 214 | } else if (!gaim_utf8_strcasecmp(state, GAIM_AWAY_CUSTOM)) { |
| 2393 | 215 | if (msg) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
216 | status = GG_STATUS_BUSY; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4059
diff
changeset
|
217 | gc->away = g_strdup(""); |
| 2393 | 218 | } else |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
219 | status = GG_STATUS_AVAIL; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
220 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
221 | if (gd->own_status & GG_STATUS_FRIENDS_MASK) |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
222 | status |= GG_STATUS_FRIENDS_MASK; |
| 2393 | 223 | } |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
224 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
225 | gd->own_status = status; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
226 | gg_change_status(gd->sess, status); |
| 2393 | 227 | } |
| 228 | ||
| 229 | static gchar *get_away_text(int uc) | |
| 230 | { | |
| 231 | if (uc == UC_UNAVAILABLE) | |
| 232 | return AGG_STATUS_NOT_AVAIL; | |
| 233 | uc = uc >> 5; | |
| 234 | switch (uc) { | |
| 235 | case GG_STATUS_AVAIL: | |
| 236 | default: | |
| 237 | return AGG_STATUS_AVAIL; | |
| 238 | case GG_STATUS_AVAIL | GG_STATUS_FRIENDS_MASK: | |
| 239 | return AGG_STATUS_AVAIL_FRIENDS; | |
| 240 | case GG_STATUS_BUSY: | |
| 241 | return AGG_STATUS_BUSY; | |
| 242 | case GG_STATUS_BUSY | GG_STATUS_FRIENDS_MASK: | |
| 243 | return AGG_STATUS_BUSY_FRIENDS; | |
| 244 | case GG_STATUS_INVISIBLE: | |
| 245 | return AGG_STATUS_INVISIBLE; | |
| 246 | case GG_STATUS_INVISIBLE | GG_STATUS_FRIENDS_MASK: | |
| 247 | return AGG_STATUS_INVISIBLE_FRIENDS; | |
| 248 | case GG_STATUS_NOT_AVAIL: | |
| 249 | return AGG_STATUS_NOT_AVAIL; | |
| 250 | } | |
| 251 | } | |
| 252 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2423
diff
changeset
|
253 | static GList *agg_away_states(struct gaim_connection *gc) |
| 2393 | 254 | { |
| 255 | GList *m = NULL; | |
| 256 | ||
| 257 | m = g_list_append(m, AGG_STATUS_AVAIL); | |
| 258 | m = g_list_append(m, AGG_STATUS_BUSY); | |
| 259 | m = g_list_append(m, AGG_STATUS_INVISIBLE); | |
| 260 | m = g_list_append(m, AGG_STATUS_AVAIL_FRIENDS); | |
| 261 | m = g_list_append(m, AGG_STATUS_BUSY_FRIENDS); | |
| 262 | m = g_list_append(m, AGG_STATUS_INVISIBLE_FRIENDS); | |
| 263 | m = g_list_append(m, AGG_STATUS_NOT_AVAIL); | |
| 264 | return m; | |
| 265 | } | |
| 266 | ||
| 267 | /* Enhance these functions, more options and such stuff */ | |
| 268 | static GList *agg_buddy_menu(struct gaim_connection *gc, char *who) | |
| 269 | { | |
| 270 | GList *m = NULL; | |
| 271 | struct proto_buddy_menu *pbm; | |
| 4687 | 272 | struct buddy *b = gaim_find_buddy(gc->account, who); |
| 2393 | 273 | static char buf[AGG_BUF_LEN]; |
| 274 | ||
| 275 | if (!b) { | |
| 276 | return m; | |
| 277 | } | |
| 278 | ||
| 279 | pbm = g_new0(struct proto_buddy_menu, 1); | |
| 280 | g_snprintf(buf, sizeof(buf), _("Status: %s"), get_away_text(b->uc)); | |
| 281 | pbm->label = buf; | |
| 282 | pbm->callback = NULL; | |
| 283 | pbm->gc = gc; | |
| 284 | m = g_list_append(m, pbm); | |
| 285 | ||
| 286 | return m; | |
| 287 | } | |
| 288 | ||
| 289 | static void main_callback(gpointer data, gint source, GaimInputCondition cond) | |
| 290 | { | |
| 291 | struct gaim_connection *gc = data; | |
| 292 | struct agg_data *gd = gc->proto_data; | |
| 293 | struct gg_event *e; | |
| 294 | ||
| 295 | debug_printf("main_callback enter: begin\n"); | |
| 296 | ||
| 297 | if (gd->sess->fd != source) | |
| 298 | gd->sess->fd = source; | |
| 299 | ||
| 4511 | 300 | if (source == 0) { |
|
2915
8c3d875a34dc
[gaim-migrate @ 2928]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2856
diff
changeset
|
301 | hide_login_progress(gc, _("Could not connect")); |
| 2393 | 302 | signoff(gc); |
| 303 | return; | |
| 304 | } | |
| 305 | ||
| 306 | if (!(e = gg_watch_fd(gd->sess))) { | |
| 307 | debug_printf("main_callback: gg_watch_fd failed - CRITICAL!\n"); | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
308 | hide_login_progress(gc, _("Unable to read socket")); |
| 2393 | 309 | signoff(gc); |
| 310 | return; | |
| 311 | } | |
| 312 | ||
| 313 | switch (e->type) { | |
| 314 | case GG_EVENT_NONE: | |
| 315 | /* do nothing */ | |
| 316 | break; | |
| 317 | case GG_EVENT_CONN_SUCCESS: | |
| 318 | debug_printf("main_callback: CONNECTED AGAIN!?\n"); | |
| 319 | break; | |
| 320 | case GG_EVENT_CONN_FAILED: | |
| 321 | if (gc->inpa) | |
| 322 | gaim_input_remove(gc->inpa); | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
323 | handle_errcode(gc, e->event.failure); |
| 2393 | 324 | signoff(gc); |
| 325 | break; | |
| 326 | case GG_EVENT_MSG: | |
| 327 | { | |
| 328 | gchar *imsg; | |
| 329 | gchar user[20]; | |
| 330 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
331 | g_snprintf(user, sizeof(user), "%lu", e->event.msg.sender); |
| 2393 | 332 | if (!allowed_uin(gc, user)) |
| 333 | break; | |
| 4051 | 334 | imsg = charset_convert(e->event.msg.message, "CP1250", "UTF-8"); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
335 | strip_linefeed(imsg); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
336 | /* e->event.msg.time - we don't know what this time is for */ |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2846
diff
changeset
|
337 | serv_got_im(gc, user, imsg, 0, time(NULL), -1); |
| 2393 | 338 | g_free(imsg); |
| 339 | } | |
| 340 | break; | |
| 341 | case GG_EVENT_NOTIFY: | |
| 342 | { | |
| 343 | gchar user[20]; | |
| 344 | struct gg_notify_reply *n = e->event.notify; | |
| 345 | guint status; | |
| 346 | ||
| 347 | while (n->uin) { | |
| 348 | switch (n->status) { | |
| 349 | case GG_STATUS_NOT_AVAIL: | |
| 350 | status = UC_UNAVAILABLE; | |
| 351 | break; | |
| 352 | case GG_STATUS_AVAIL: | |
| 353 | case GG_STATUS_BUSY: | |
| 354 | case GG_STATUS_INVISIBLE: | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
355 | status = UC_NORMAL | (n->status << 5); |
| 2393 | 356 | break; |
| 357 | default: | |
| 358 | status = UC_NORMAL; | |
| 359 | break; | |
| 360 | } | |
| 361 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
362 | g_snprintf(user, sizeof(user), "%lu", n->uin); |
| 2393 | 363 | serv_got_update(gc, user, (status == UC_UNAVAILABLE) ? 0 : 1, 0, 0, 0, |
| 4732 | 364 | status); |
| 2393 | 365 | n++; |
| 366 | } | |
| 367 | } | |
| 368 | break; | |
| 369 | case GG_EVENT_STATUS: | |
| 370 | { | |
| 371 | gchar user[20]; | |
| 372 | guint status; | |
| 373 | ||
| 374 | switch (e->event.status.status) { | |
| 375 | case GG_STATUS_NOT_AVAIL: | |
| 376 | status = UC_UNAVAILABLE; | |
| 377 | break; | |
| 378 | case GG_STATUS_AVAIL: | |
| 379 | case GG_STATUS_BUSY: | |
| 380 | case GG_STATUS_INVISIBLE: | |
| 381 | status = UC_NORMAL | (e->event.status.status << 5); | |
| 382 | break; | |
| 383 | default: | |
| 384 | status = UC_NORMAL; | |
| 385 | break; | |
| 386 | } | |
| 387 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
388 | g_snprintf(user, sizeof(user), "%lu", e->event.status.uin); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
389 | serv_got_update(gc, user, (status == UC_UNAVAILABLE) ? 0 : 1, 0, 0, 0, |
| 4732 | 390 | status); |
| 2393 | 391 | } |
| 392 | break; | |
| 393 | case GG_EVENT_ACK: | |
|
4201
547da94c5a14
[gaim-migrate @ 4432]
Christian Hammond <chipx86@chipx86.com>
parents:
4111
diff
changeset
|
394 | debug_printf("main_callback: message %d to %lu sent with status %d\n", |
| 2393 | 395 | e->event.ack.seq, e->event.ack.recipient, e->event.ack.status); |
| 396 | break; | |
| 397 | default: | |
| 398 | debug_printf("main_callback: unsupported event %d\n", e->type); | |
| 399 | break; | |
| 400 | } | |
| 401 | gg_free_event(e); | |
| 402 | } | |
| 403 | ||
| 3630 | 404 | void login_callback(gpointer data, gint source, GaimInputCondition cond) |
| 2393 | 405 | { |
| 406 | struct gaim_connection *gc = data; | |
| 407 | struct agg_data *gd = gc->proto_data; | |
| 408 | struct gg_event *e; | |
| 409 | ||
| 3630 | 410 | debug_printf("GG login_callback...\n"); |
| 411 | if (!g_slist_find(connections, gc)) { | |
| 2393 | 412 | close(source); |
| 413 | return; | |
| 414 | } | |
| 3630 | 415 | debug_printf("Found GG connection\n"); |
| 4452 | 416 | |
| 4511 | 417 | if (source == 0) { |
| 2393 | 418 | hide_login_progress(gc, _("Unable to connect.")); |
| 419 | signoff(gc); | |
| 420 | return; | |
| 421 | } | |
| 4452 | 422 | |
| 423 | gd->sess->fd = source; | |
| 424 | ||
| 3630 | 425 | debug_printf("Source is valid.\n"); |
| 426 | if (gc->inpa == 0) { | |
| 427 | debug_printf("login_callback.. checking gc->inpa .. is 0.. setting fd watch\n"); | |
| 2393 | 428 | gc->inpa = gaim_input_add(gd->sess->fd, GAIM_INPUT_READ, login_callback, gc); |
| 3630 | 429 | debug_printf("Adding watch on fd\n"); |
| 430 | } | |
| 431 | debug_printf("Checking State.\n"); | |
| 2393 | 432 | switch (gd->sess->state) { |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
433 | case GG_STATE_READING_DATA: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
434 | set_login_progress(gc, 2, _("Reading data")); |
|
2835
d5e48daa5e3a
[gaim-migrate @ 2848]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2806
diff
changeset
|
435 | break; |
| 2393 | 436 | case GG_STATE_CONNECTING_GG: |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
437 | set_login_progress(gc, 3, _("Balancer handshake")); |
| 2393 | 438 | break; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
439 | case GG_STATE_READING_KEY: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
440 | set_login_progress(gc, 4, _("Reading server key")); |
|
2835
d5e48daa5e3a
[gaim-migrate @ 2848]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2806
diff
changeset
|
441 | break; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
442 | case GG_STATE_READING_REPLY: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
443 | set_login_progress(gc, 5, _("Exchanging key hash")); |
| 2393 | 444 | break; |
| 445 | default: | |
| 3630 | 446 | debug_printf("No State found\n"); |
| 2393 | 447 | break; |
| 448 | } | |
| 3630 | 449 | debug_printf("gg_watch_fd\n"); |
| 2393 | 450 | if (!(e = gg_watch_fd(gd->sess))) { |
| 451 | debug_printf("login_callback: gg_watch_fd failed - CRITICAL!\n"); | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
452 | hide_login_progress(gc, _("Critical error in GG library\n")); |
| 2393 | 453 | signoff(gc); |
| 454 | return; | |
| 455 | } | |
| 456 | ||
| 3630 | 457 | /* If we are GG_STATE_CONNECTING_GG then we still need to connect, as |
| 458 | we could not use proxy_connect in libgg.c */ | |
| 459 | switch( gd->sess->state ) { | |
| 460 | case GG_STATE_CONNECTING_GG: | |
| 461 | { | |
| 462 | struct in_addr ip; | |
| 463 | char buf[256]; | |
| 4634 | 464 | |
| 3630 | 465 | /* Remove watch on initial socket - now that we have ip and port of login server */ |
| 466 | gaim_input_remove(gc->inpa); | |
| 467 | ||
| 468 | ip.s_addr = gd->sess->server_ip; | |
| 4634 | 469 | |
| 470 | if (proxy_connect(gc->account, inet_ntoa(ip), gd->sess->port, login_callback, gc) < 0) { | |
| 3630 | 471 | g_snprintf(buf, sizeof(buf), _("Connect to %s failed"), inet_ntoa(ip)); |
| 472 | hide_login_progress(gc, buf); | |
| 473 | signoff(gc); | |
| 474 | return; | |
| 475 | } | |
| 476 | break; | |
| 477 | } | |
| 478 | case GG_STATE_READING_KEY: | |
| 479 | /* Set new watch on login server ip */ | |
| 480 | if(gc->inpa) | |
| 481 | gc->inpa = gaim_input_add(gd->sess->fd, GAIM_INPUT_READ, login_callback, gc); | |
| 482 | debug_printf("Setting watch on connection with login server.\n"); | |
| 483 | break; | |
| 484 | }/* end switch() */ | |
| 485 | ||
| 486 | debug_printf("checking gg_event\n"); | |
| 2393 | 487 | switch (e->type) { |
| 488 | case GG_EVENT_NONE: | |
| 489 | /* nothing */ | |
| 490 | break; | |
| 491 | case GG_EVENT_CONN_SUCCESS: | |
| 492 | /* Setup new input handler */ | |
| 493 | if (gc->inpa) | |
| 494 | gaim_input_remove(gc->inpa); | |
| 495 | gc->inpa = gaim_input_add(gd->sess->fd, GAIM_INPUT_READ, main_callback, gc); | |
| 496 | ||
| 497 | /* Our signon is complete */ | |
| 498 | account_online(gc); | |
| 499 | serv_finish_login(gc); | |
| 500 | ||
| 501 | break; | |
| 502 | case GG_EVENT_CONN_FAILED: | |
| 503 | gaim_input_remove(gc->inpa); | |
| 504 | gc->inpa = 0; | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
505 | handle_errcode(gc, e->event.failure); |
| 2393 | 506 | signoff(gc); |
| 507 | break; | |
| 508 | default: | |
| 3630 | 509 | debug_printf("no gg_event\n"); |
| 2393 | 510 | break; |
| 511 | } | |
| 3630 | 512 | debug_printf("Returning from login_callback\n"); |
| 2393 | 513 | gg_free_event(e); |
| 514 | } | |
| 515 | ||
| 516 | static void agg_keepalive(struct gaim_connection *gc) | |
| 517 | { | |
| 518 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
| 519 | if (gg_ping(gd->sess) < 0) { | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
520 | hide_login_progress(gc, _("Unable to ping server")); |
| 2393 | 521 | signoff(gc); |
| 522 | return; | |
| 523 | } | |
| 524 | } | |
| 525 | ||
| 4491 | 526 | static void agg_login(struct gaim_account *account) |
| 2393 | 527 | { |
| 4491 | 528 | struct gaim_connection *gc = new_gaim_conn(account); |
| 2393 | 529 | struct agg_data *gd = gc->proto_data = g_new0(struct agg_data, 1); |
| 530 | char buf[80]; | |
| 531 | ||
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
532 | gc->checkbox = _("Send as message"); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
533 | |
| 2393 | 534 | gd->sess = g_new0(struct gg_session, 1); |
| 535 | ||
| 4491 | 536 | if (account->proto_opt[USEROPT_NICK][0]) |
| 2393 | 537 | g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", |
| 4491 | 538 | account->proto_opt[USEROPT_NICK]); |
| 2393 | 539 | |
| 540 | set_login_progress(gc, 1, _("Looking up GG server")); | |
| 541 | ||
| 4491 | 542 | if (invalid_uin(account->username)) { |
| 2393 | 543 | hide_login_progress(gc, _("Invalid Gadu-Gadu UIN specified")); |
| 544 | signoff(gc); | |
| 545 | return; | |
| 546 | } | |
| 547 | ||
| 548 | gc->inpa = 0; | |
| 549 | ||
| 550 | /* | |
| 551 | if (gg_login(gd->sess, strtol(user->username, (char **)NULL, 10), user->password, 1) < 0) { | |
| 552 | debug_printf("uin=%u, pass=%s", strtol(user->username, (char **)NULL, 10), user->password); | |
| 553 | hide_login_progress(gc, "Unable to connect."); | |
| 554 | signoff(gc); | |
| 555 | return; | |
| 556 | } | |
| 557 | ||
| 558 | gg_login() sucks for me, so I'm using proxy_connect() | |
| 559 | */ | |
| 560 | ||
| 4491 | 561 | gd->sess->uin = (uin_t) strtol(account->username, (char **)NULL, 10); |
| 562 | gd->sess->password = g_strdup(account->password); | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
563 | gd->sess->state = GG_STATE_CONNECTING; |
| 2393 | 564 | gd->sess->check = GG_CHECK_WRITE; |
| 565 | gd->sess->async = 1; | |
| 4634 | 566 | if (proxy_connect(account, GG_APPMSG_HOST, GG_APPMSG_PORT, login_callback, gc) < 0) { |
| 2393 | 567 | g_snprintf(buf, sizeof(buf), _("Connect to %s failed"), GG_APPMSG_HOST); |
| 568 | hide_login_progress(gc, buf); | |
| 569 | signoff(gc); | |
| 570 | return; | |
| 571 | } | |
| 572 | } | |
| 573 | ||
| 574 | static void agg_close(struct gaim_connection *gc) | |
| 575 | { | |
| 576 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
| 577 | if (gc->inpa) | |
| 578 | gaim_input_remove(gc->inpa); | |
| 579 | gg_logoff(gd->sess); | |
|
3339
3f77f9347b69
[gaim-migrate @ 3358]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
3100
diff
changeset
|
580 | gd->own_status = GG_STATUS_NOT_AVAIL; |
| 2393 | 581 | gg_free_session(gd->sess); |
| 582 | g_free(gc->proto_data); | |
| 583 | } | |
| 584 | ||
| 3033 | 585 | static int agg_send_im(struct gaim_connection *gc, char *who, char *msg, int len, int flags) |
| 2393 | 586 | { |
| 587 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
| 588 | gchar *imsg; | |
| 589 | ||
| 590 | if (invalid_uin(who)) { | |
| 3427 | 591 | do_error_dialog(_("You are trying to send a message to an invalid Gadu-Gadu UIN."), NULL, |
| 592 | GAIM_ERROR); | |
| 2393 | 593 | return -1; |
| 594 | } | |
| 595 | ||
| 596 | if (strlen(msg) > 0) { | |
| 4051 | 597 | imsg = charset_convert(msg, "UTF-8", "CP1250"); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
598 | if (gg_send_message(gd->sess, (flags & IM_FLAG_CHECKBOX) |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
599 | ? GG_CLASS_MSG : GG_CLASS_CHAT, |
| 2393 | 600 | strtol(who, (char **)NULL, 10), imsg) < 0) |
| 601 | return -1; | |
| 602 | g_free(imsg); | |
| 603 | } | |
| 604 | return 1; | |
| 605 | } | |
| 606 | ||
| 3466 | 607 | static void agg_add_buddy(struct gaim_connection *gc, const char *who) |
| 2393 | 608 | { |
| 609 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
| 610 | if (invalid_uin(who)) | |
| 611 | return; | |
| 612 | gg_add_notify(gd->sess, strtol(who, (char **)NULL, 10)); | |
| 613 | } | |
| 614 | ||
|
2681
73cd94b9e78e
[gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2563
diff
changeset
|
615 | static void agg_rem_buddy(struct gaim_connection *gc, char *who, char *group) |
| 2393 | 616 | { |
| 617 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
| 618 | if (invalid_uin(who)) | |
| 619 | return; | |
| 620 | gg_remove_notify(gd->sess, strtol(who, (char **)NULL, 10)); | |
| 621 | } | |
| 622 | ||
| 623 | static void agg_add_buddies(struct gaim_connection *gc, GList *whos) | |
| 624 | { | |
| 625 | struct agg_data *gd = (struct agg_data *)gc->proto_data; | |
| 626 | uin_t *userlist = NULL; | |
| 627 | int userlist_size = 0; | |
| 628 | ||
| 629 | while (whos) { | |
| 630 | if (!invalid_uin(whos->data)) { | |
| 631 | userlist_size++; | |
| 632 | userlist = g_renew(uin_t, userlist, userlist_size); | |
| 633 | userlist[userlist_size - 1] = | |
| 634 | (uin_t) strtol((char *)whos->data, (char **)NULL, 10); | |
| 635 | } | |
| 636 | whos = g_list_next(whos); | |
| 637 | } | |
| 638 | ||
| 639 | if (userlist) { | |
| 640 | gg_notify(gd->sess, userlist, userlist_size); | |
| 641 | g_free(userlist); | |
| 642 | } | |
| 643 | } | |
| 644 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
645 | static void search_results(struct gaim_connection *gc, gchar *webdata) |
| 2393 | 646 | { |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
647 | gchar **webdata_tbl; |
| 2393 | 648 | gchar *buf; |
| 649 | char *ptr; | |
| 650 | int i, j; | |
| 651 | ||
| 652 | if ((ptr = strstr(webdata, "query_results:")) == NULL || (ptr = strchr(ptr, '\n')) == NULL) { | |
| 653 | debug_printf("search_callback: pubdir result [%s]\n", webdata); | |
| 3427 | 654 | do_error_dialog(_("Couldn't get search results"), NULL, GAIM_ERROR); |
| 2393 | 655 | return; |
| 656 | } | |
| 657 | ptr++; | |
| 658 | ||
| 659 | buf = g_strconcat("<B>", _("Gadu-Gadu Search Engine"), "</B><BR>\n", NULL); | |
| 660 | ||
| 661 | webdata_tbl = g_strsplit(ptr, "\n", AGG_PUBDIR_MAX_ENTRIES); | |
| 662 | ||
| 663 | j = 0; | |
| 664 | ||
| 665 | /* Parse array */ | |
| 666 | for (i = 0; webdata_tbl[i] != NULL; i++) { | |
| 667 | gchar *p, *oldibuf; | |
| 668 | static gchar *ibuf; | |
| 669 | ||
| 670 | g_strdelimit(webdata_tbl[i], "\t\n", ' '); | |
| 671 | ||
| 672 | /* GG_PUBDIR_HOST service returns 7 lines of data per directory entry */ | |
| 673 | if (i % 8 == 0) | |
| 674 | j = 0; | |
| 675 | ||
| 4051 | 676 | p = charset_convert(g_strstrip(webdata_tbl[i]), "CP1250", "UTF-8"); |
| 2393 | 677 | |
| 678 | oldibuf = ibuf; | |
| 679 | ||
| 680 | switch (j) { | |
| 681 | case 0: | |
| 682 | ibuf = g_strconcat("---------------------------------<BR>\n", NULL); | |
| 683 | oldibuf = ibuf; | |
| 684 | ibuf = g_strconcat(oldibuf, "<B>", _("Active"), ":</B> ", | |
| 4606 | 685 | (atoi(p) == 2) ? _("Yes") : _("No"), "<BR>\n", NULL); |
| 2393 | 686 | g_free(oldibuf); |
| 687 | break; | |
| 688 | case 1: | |
| 689 | ibuf = g_strconcat(oldibuf, "<B>", _("UIN"), ":</B> ", p, "<BR>\n", NULL); | |
| 690 | g_free(oldibuf); | |
| 691 | break; | |
| 692 | case 2: | |
| 693 | ibuf = g_strconcat(oldibuf, "<B>", _("First name"), ":</B> ", p, "<BR>\n", NULL); | |
| 694 | g_free(oldibuf); | |
| 695 | break; | |
| 696 | case 3: | |
| 697 | ibuf = | |
| 698 | g_strconcat(oldibuf, "<B>", _("Second Name"), ":</B> ", p, "<BR>\n", NULL); | |
| 699 | g_free(oldibuf); | |
| 700 | break; | |
| 701 | case 4: | |
| 702 | ibuf = g_strconcat(oldibuf, "<B>", _("Nick"), ":</B> ", p, "<BR>\n", NULL); | |
| 703 | g_free(oldibuf); | |
| 704 | break; | |
| 705 | case 5: | |
| 706 | /* Hack, invalid_uin does what we really want here but may change in future */ | |
| 707 | if (invalid_uin(p)) | |
| 708 | ibuf = | |
| 709 | g_strconcat(oldibuf, "<B>", _("Birth year"), ":</B> <BR>\n", NULL); | |
| 710 | else | |
| 711 | ibuf = | |
| 712 | g_strconcat(oldibuf, "<B>", _("Birth year"), ":</B> ", p, "<BR>\n", | |
| 713 | NULL); | |
| 714 | g_free(oldibuf); | |
| 715 | break; | |
| 716 | case 6: | |
| 717 | if (atoi(p) == GG_GENDER_FEMALE) | |
| 718 | ibuf = g_strconcat(oldibuf, "<B>", _("Sex"), ":</B> woman<BR>\n", NULL); | |
| 719 | else if (atoi(p) == GG_GENDER_MALE) | |
| 720 | ibuf = g_strconcat(oldibuf, "<B>", _("Sex"), ":</B> man<BR>\n", NULL); | |
| 721 | else | |
| 722 | ibuf = g_strconcat(oldibuf, "<B>", _("Sex"), ":</B> <BR>\n", NULL); | |
| 723 | g_free(oldibuf); | |
| 724 | break; | |
| 725 | case 7: | |
| 726 | ibuf = g_strconcat(oldibuf, "<B>", _("City"), ":</B> ", p, "<BR>\n", NULL); | |
| 727 | g_free(oldibuf); | |
| 728 | ||
| 729 | /* We have all lines, so add them to buffer */ | |
| 730 | { | |
| 731 | gchar *oldbuf = buf; | |
| 732 | buf = g_strconcat(oldbuf, ibuf, NULL); | |
| 733 | g_free(oldbuf); | |
| 734 | } | |
| 735 | ||
| 736 | g_free(ibuf); | |
| 737 | break; | |
| 738 | } | |
| 739 | ||
| 740 | g_free(p); | |
| 741 | ||
| 742 | j++; | |
| 743 | } | |
| 744 | ||
| 745 | g_strfreev(webdata_tbl); | |
| 746 | ||
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2773
diff
changeset
|
747 | g_show_info_text(gc, NULL, 2, buf, NULL); |
| 2393 | 748 | |
| 749 | g_free(buf); | |
| 750 | } | |
| 751 | ||
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
752 | static void import_buddies_server_results(struct gaim_connection *gc, gchar *webdata) |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
753 | { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
754 | gchar *ptr; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
755 | gchar **users_tbl; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
756 | int i; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
757 | if (strstr(webdata, "no_data:")) { |
| 3427 | 758 | do_error_dialog(_("There is no Buddy List stored on the Gadu-Gadu server."), NULL, GAIM_ERROR); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
759 | return; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
760 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
761 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
762 | if ((ptr = strstr(webdata, "get_results:")) == NULL || (ptr = strchr(ptr, ':')) == NULL) { |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
763 | debug_printf("import_buddies_server_results: import buddies result [%s]\n", webdata); |
| 4059 | 764 | do_error_dialog(_("Couldn't Import Buddy List from Server"), NULL, GAIM_ERROR); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
765 | return; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
766 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
767 | ptr++; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
768 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
769 | users_tbl = g_strsplit(ptr, "\n", AGG_PUBDIR_MAX_ENTRIES); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
770 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
771 | /* Parse array of Buddies List */ |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
772 | for (i = 0; users_tbl[i] != NULL; i++) { |
|
4520
c31da57f5e7f
[gaim-migrate @ 4798]
Christian Hammond <chipx86@chipx86.com>
parents:
4516
diff
changeset
|
773 | gchar **data_tbl; |
|
c31da57f5e7f
[gaim-migrate @ 4798]
Christian Hammond <chipx86@chipx86.com>
parents:
4516
diff
changeset
|
774 | gchar *name, *show; |
|
c31da57f5e7f
[gaim-migrate @ 4798]
Christian Hammond <chipx86@chipx86.com>
parents:
4516
diff
changeset
|
775 | |
| 4516 | 776 | if (strlen(users_tbl[i])==0) { |
| 777 | debug_printf("import_buddies_server_results: users_tbl[i] is empty\n"); | |
| 4530 | 778 | continue; |
| 4516 | 779 | } |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
780 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
781 | g_strdelimit(users_tbl[i], "\r\t\n\015", ' '); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
782 | data_tbl = g_strsplit(users_tbl[i], ";", 8); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
783 | |
| 4437 | 784 | show = charset_convert(data_tbl[3], "CP1250", "UTF-8"); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
785 | name = data_tbl[6]; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
786 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
787 | if (invalid_uin(name)) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
788 | continue; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
789 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
790 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
791 | debug_printf("import_buddies_server_results: uin: %s\n", name); |
| 4687 | 792 | if (!gaim_find_buddy(gc->account, name)) { |
| 793 | struct buddy *b; | |
| 794 | struct group *g; | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
795 | /* Default group if none specified on server */ |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
796 | gchar *group = g_strdup("Gadu-Gadu"); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
797 | if (strlen(data_tbl[5])) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
798 | gchar **group_tbl = g_strsplit(data_tbl[5], ",", 2); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
799 | if (strlen(group_tbl[0])) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
800 | g_free(group); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
801 | group = g_strdup(group_tbl[0]); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
802 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
803 | g_strfreev(group_tbl); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
804 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
805 | /* Add Buddy to our userlist */ |
|
4775
239cb803fb1d
[gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
806 | if (!(g = gaim_find_group(group))) { |
| 4687 | 807 | g = gaim_group_new(group); |
|
4775
239cb803fb1d
[gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
808 | gaim_blist_add_group(g, NULL); |
|
239cb803fb1d
[gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents:
4770
diff
changeset
|
809 | } |
| 4687 | 810 | b = gaim_buddy_new(gc->account, name, strlen(show) ? show : NULL); |
| 811 | gaim_blist_add_buddy(b,g,NULL); | |
| 4349 | 812 | gaim_blist_save(); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
813 | g_free(group); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
814 | } |
| 4437 | 815 | g_free(show); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
816 | g_strfreev(data_tbl); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
817 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
818 | g_strfreev(users_tbl); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
819 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
820 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
821 | static void export_buddies_server_results(struct gaim_connection *gc, gchar *webdata) |
| 2393 | 822 | { |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
823 | if (strstr(webdata, "put_success:")) { |
| 3427 | 824 | do_error_dialog(_("Buddy List successfully transferred to Gadu-Gadu server"), NULL, GAIM_INFO); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
825 | return; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
826 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
827 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
828 | debug_printf("export_buddies_server_results: webdata [%s]\n", webdata); |
| 3427 | 829 | do_error_dialog(_("Couldn't transfer Buddy List to Gadu-Gadu server"), NULL, GAIM_ERROR); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
830 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
831 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
832 | static void delete_buddies_server_results(struct gaim_connection *gc, gchar *webdata) |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
833 | { |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
834 | if (strstr(webdata, "put_success:")) { |
| 4059 | 835 | do_error_dialog(_("Buddy List successfully deleted from Gadu-Gadu server"), NULL, GAIM_INFO); |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
836 | return; |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
837 | } |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
838 | |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
839 | debug_printf("delete_buddies_server_results: webdata [%s]\n", webdata); |
| 3427 | 840 | do_error_dialog(_("Couldn't delete Buddy List from Gadu-Gadu server"), NULL, GAIM_ERROR); |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
841 | } |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
842 | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
843 | static void password_change_server_results(struct gaim_connection *gc, gchar *webdata) |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
844 | { |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
845 | if (strstr(webdata, "reg_success:")) { |
| 3427 | 846 | do_error_dialog(_("Password changed successfully"), NULL, GAIM_INFO); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
847 | return; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
848 | } |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
849 | |
| 4516 | 850 | debug_printf("password_change_server_results: webdata [%s]\n", webdata); |
| 3427 | 851 | do_error_dialog(_("Password couldn't be changed"), NULL, GAIM_ERROR); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
852 | } |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
853 | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
854 | static void http_results(gpointer data, gint source, GaimInputCondition cond) |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
855 | { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
856 | struct agg_http *hdata = data; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
857 | struct gaim_connection *gc = hdata->gc; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
858 | char *webdata; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
859 | int len; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
860 | char read_data; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
861 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
862 | debug_printf("http_results: begin\n"); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
863 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
864 | if (!g_slist_find(connections, gc)) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
865 | debug_printf("search_callback: g_slist_find error\n"); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
866 | gaim_input_remove(hdata->inpa); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
867 | g_free(hdata); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
868 | close(source); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
869 | return; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
870 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
871 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
872 | webdata = NULL; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
873 | len = 0; |
|
3717
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3630
diff
changeset
|
874 | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
875 | while (read(source, &read_data, 1) > 0 || errno == EWOULDBLOCK) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
876 | if (errno == EWOULDBLOCK) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
877 | errno = 0; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
878 | continue; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
879 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
880 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
881 | if (!read_data) |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
882 | continue; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
883 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
884 | len++; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
885 | webdata = g_realloc(webdata, len); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
886 | webdata[len - 1] = read_data; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
887 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
888 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
889 | webdata = g_realloc(webdata, len + 1); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
890 | webdata[len] = 0; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
891 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
892 | gaim_input_remove(hdata->inpa); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
893 | close(source); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
894 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
895 | debug_printf("http_results: type %d, webdata [%s]\n", hdata->type, webdata); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
896 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
897 | switch (hdata->type) { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
898 | case AGG_HTTP_SEARCH: |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
899 | search_results(gc, webdata); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
900 | break; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
901 | case AGG_HTTP_USERLIST_IMPORT: |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
902 | import_buddies_server_results(gc, webdata); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
903 | break; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
904 | case AGG_HTTP_USERLIST_EXPORT: |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
905 | export_buddies_server_results(gc, webdata); |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
906 | break; |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
907 | case AGG_HTTP_USERLIST_DELETE: |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
908 | delete_buddies_server_results(gc, webdata); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
909 | break; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
910 | case AGG_HTTP_PASSWORD_CHANGE: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
911 | password_change_server_results(gc, webdata); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
912 | break; |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
913 | case AGG_HTTP_NONE: |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
914 | default: |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
915 | debug_printf("http_results: unsupported type %d\n", hdata->type); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
916 | break; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
917 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
918 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
919 | g_free(webdata); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
920 | g_free(hdata); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
921 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
922 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
923 | static void http_req_callback(gpointer data, gint source, GaimInputCondition cond) |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
924 | { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
925 | struct agg_http *hdata = data; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
926 | struct gaim_connection *gc = hdata->gc; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
927 | gchar *request = hdata->request; |
| 2393 | 928 | gchar *buf; |
| 929 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
930 | debug_printf("http_req_callback: begin\n"); |
| 2393 | 931 | |
| 932 | if (!g_slist_find(connections, gc)) { | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
933 | debug_printf("http_req_callback: g_slist_find error\n"); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
934 | g_free(request); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
935 | g_free(hdata); |
| 2393 | 936 | close(source); |
| 937 | return; | |
| 938 | } | |
| 939 | ||
| 4511 | 940 | if (source == 0) { |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
941 | g_free(request); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
942 | g_free(hdata); |
| 2393 | 943 | return; |
| 944 | } | |
| 945 | ||
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
946 | debug_printf("http_req_callback: http request [%s]\n", request); |
| 2393 | 947 | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
948 | buf = g_strdup_printf("POST %s HTTP/1.0\r\n" |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
949 | "Host: %s\r\n" |
| 2393 | 950 | "Content-Type: application/x-www-form-urlencoded\r\n" |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
951 | "User-Agent: " GG_HTTP_USERAGENT "\r\n" |
| 2393 | 952 | "Content-Length: %d\r\n" |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
953 | "Pragma: no-cache\r\n" "\r\n" "%s\r\n", |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
954 | hdata->form, hdata->host, strlen(request), request); |
| 2393 | 955 | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
956 | g_free(request); |
| 2393 | 957 | |
| 958 | if (write(source, buf, strlen(buf)) < strlen(buf)) { | |
| 959 | g_free(buf); | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
960 | g_free(hdata); |
| 2393 | 961 | close(source); |
| 3427 | 962 | do_error_dialog(_("Error communicating with Gadu-Gadu server"), |
| 963 | _("Gaim was unable to complete your request due to a problem " | |
| 4059 | 964 | "communicating with the Gadu-Gadu HTTP server. Please try again " |
| 3427 | 965 | "later."), GAIM_ERROR); |
| 2393 | 966 | return; |
| 967 | } | |
| 968 | ||
| 969 | g_free(buf); | |
| 970 | ||
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
971 | hdata->inpa = gaim_input_add(source, GAIM_INPUT_READ, http_results, hdata); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
972 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
973 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
974 | static void import_buddies_server(struct gaim_connection *gc) |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
975 | { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
976 | struct agg_http *hi = g_new0(struct agg_http, 1); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
977 | gchar *u = gg_urlencode(gc->username); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
978 | gchar *p = gg_urlencode(gc->password); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
979 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
980 | hi->gc = gc; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
981 | hi->type = AGG_HTTP_USERLIST_IMPORT; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
982 | hi->form = AGG_PUBDIR_USERLIST_IMPORT_FORM; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
983 | hi->host = GG_PUBDIR_HOST; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
984 | hi->request = g_strdup_printf("FmNum=%s&Pass=%s", u, p); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
985 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
986 | g_free(u); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
987 | g_free(p); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
988 | |
| 4634 | 989 | if (proxy_connect(gc->account, GG_PUBDIR_HOST, GG_PUBDIR_PORT, http_req_callback, hi) < 0) { |
| 3427 | 990 | do_error_dialog(_("Unable to import Gadu-Gadu buddy list"), |
| 991 | _("Gaim was unable to connect to the Gadu-Gadu buddy list " | |
| 992 | "server. Please try again later."), GAIM_ERROR); | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
993 | g_free(hi->request); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
994 | g_free(hi); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
995 | return; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
996 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
997 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
998 | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
999 | static void export_buddies_server(struct gaim_connection *gc) |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1000 | { |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1001 | struct agg_http *he = g_new0(struct agg_http, 1); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1002 | gchar *ptr; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1003 | gchar *u = gg_urlencode(gc->username); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1004 | gchar *p = gg_urlencode(gc->password); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1005 | |
| 4785 | 1006 | GaimBlistNode *gnode, *bnode; |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1007 | |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1008 | he->gc = gc; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1009 | he->type = AGG_HTTP_USERLIST_EXPORT; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1010 | he->form = AGG_PUBDIR_USERLIST_EXPORT_FORM; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1011 | he->host = GG_PUBDIR_HOST; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1012 | he->request = g_strdup_printf("FmNum=%s&Pass=%s&Contacts=", u, p); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1013 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1014 | g_free(u); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1015 | g_free(p); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1016 | |
| 4785 | 1017 | for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 1018 | struct group *g = (struct group *)gnode; | |
| 4516 | 1019 | int num_added=0; |
| 4785 | 1020 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
| 1021 | continue; | |
| 1022 | for(bnode = gnode->child; bnode; bnode = bnode->next) { | |
| 1023 | struct buddy *b = (struct buddy *)bnode; | |
| 1024 | ||
| 1025 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 1026 | continue; | |
| 4349 | 1027 | |
| 4516 | 1028 | if(b->account == gc->account) { |
| 4349 | 1029 | gchar *newdata; |
| 1030 | /* GG Number */ | |
| 1031 | gchar *name = gg_urlencode(b->name); | |
| 1032 | /* GG Pseudo */ | |
| 4705 | 1033 | gchar *show = gg_urlencode(b->alias ? b->alias : b->name); |
| 4349 | 1034 | /* Group Name */ |
| 1035 | gchar *gname = gg_urlencode(g->name); | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1036 | |
| 4349 | 1037 | ptr = he->request; |
| 4516 | 1038 | newdata = g_strdup_printf("%s;%s;%s;%s;%s;%s;%s", |
| 4349 | 1039 | show, show, show, show, "", gname, name); |
| 4516 | 1040 | |
| 1041 | if(num_added > 0) | |
| 1042 | he->request = g_strconcat(ptr, "%0d%0a", newdata, NULL); | |
| 1043 | else | |
| 1044 | he->request = g_strconcat(ptr, newdata, NULL); | |
| 1045 | ||
| 1046 | num_added++; | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1047 | |
| 4349 | 1048 | g_free(newdata); |
| 1049 | g_free(ptr); | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1050 | |
| 4349 | 1051 | g_free(gname); |
| 1052 | g_free(show); | |
| 1053 | g_free(name); | |
| 1054 | } | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1055 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1056 | } |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1057 | |
| 4634 | 1058 | if (proxy_connect(gc->account, GG_PUBDIR_HOST, GG_PUBDIR_PORT, http_req_callback, he) < 0) { |
| 3427 | 1059 | do_error_dialog(_("Couldn't export buddy list"), |
| 1060 | _("Gaim was unable to connect to the buddy list server. " | |
| 1061 | "Please try again later."), GAIM_ERROR); | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1062 | g_free(he->request); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1063 | g_free(he); |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1064 | return; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1065 | } |
| 2393 | 1066 | } |
| 1067 | ||
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1068 | static void delete_buddies_server(struct gaim_connection *gc) |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1069 | { |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1070 | struct agg_http *he = g_new0(struct agg_http, 1); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1071 | gchar *u = gg_urlencode(gc->username); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1072 | gchar *p = gg_urlencode(gc->password); |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1073 | |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1074 | he->gc = gc; |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1075 | he->type = AGG_HTTP_USERLIST_DELETE; |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1076 | he->form = AGG_PUBDIR_USERLIST_EXPORT_FORM; |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1077 | he->host = GG_PUBDIR_HOST; |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1078 | he->request = g_strdup_printf("FmNum=%s&Pass=%s&Delete=1", u, p); |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1079 | |
| 4634 | 1080 | if (proxy_connect(gc->account, GG_PUBDIR_HOST, GG_PUBDIR_PORT, http_req_callback, he) < 0) { |
| 3427 | 1081 | do_error_dialog(_("Unable to delete Gadu-Gadu buddy list"), |
| 1082 | _("Gaim was unable to connect to the buddy list server. " | |
| 1083 | "Please try again later."), GAIM_ERROR); | |
|
2806
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1084 | g_free(he->request); |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1085 | g_free(he); |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1086 | return; |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1087 | } |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1088 | } |
|
1576edefc75a
[gaim-migrate @ 2819]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2792
diff
changeset
|
1089 | |
| 3466 | 1090 | static void agg_dir_search(struct gaim_connection *gc, const char *first, const char *middle, |
| 1091 | const char *last, const char *maiden, const char *city, const char *state, | |
| 1092 | const char *country, const char *email) | |
| 2393 | 1093 | { |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1094 | struct agg_http *srch = g_new0(struct agg_http, 1); |
| 2393 | 1095 | srch->gc = gc; |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1096 | srch->type = AGG_HTTP_SEARCH; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1097 | srch->form = AGG_PUBDIR_SEARCH_FORM; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1098 | srch->host = GG_PUBDIR_HOST; |
| 2393 | 1099 | |
| 1100 | if (email && strlen(email)) { | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1101 | gchar *eemail = gg_urlencode(email); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1102 | srch->request = g_strdup_printf("Mode=1&Email=%s", eemail); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1103 | g_free(eemail); |
| 2393 | 1104 | } else { |
| 4051 | 1105 | gchar *new_first = charset_convert(first, "UTF-8", "CP1250"); |
| 1106 | gchar *new_last = charset_convert(last, "UTF-8", "CP1250"); | |
| 1107 | gchar *new_city = charset_convert(city, "UTF-8", "CP1250"); | |
| 2393 | 1108 | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1109 | gchar *enew_first = gg_urlencode(new_first); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1110 | gchar *enew_last = gg_urlencode(new_last); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1111 | gchar *enew_city = gg_urlencode(new_city); |
| 2393 | 1112 | |
| 1113 | g_free(new_first); | |
| 1114 | g_free(new_last); | |
| 1115 | g_free(new_city); | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1116 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1117 | /* For active only add &ActiveOnly= */ |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1118 | srch->request = g_strdup_printf("Mode=0&FirstName=%s&LastName=%s&Gender=%d" |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1119 | "&NickName=%s&City=%s&MinBirth=%d&MaxBirth=%d", |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1120 | enew_first, enew_last, AGG_GENDER_NONE, |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1121 | "", enew_city, 0, 0); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1122 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1123 | g_free(enew_first); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1124 | g_free(enew_last); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1125 | g_free(enew_city); |
| 2393 | 1126 | } |
| 1127 | ||
| 4634 | 1128 | if (proxy_connect(gc->account, GG_PUBDIR_HOST, GG_PUBDIR_PORT, http_req_callback, srch) < 0) { |
| 3427 | 1129 | do_error_dialog(_("Unable to access directory"), |
| 1130 | _("Gaim was unable to search the Directory because it " | |
| 4059 | 1131 | "was unable to connect to the directory server. Please try " |
| 3427 | 1132 | "again later."), GAIM_ERROR); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1133 | g_free(srch->request); |
| 2393 | 1134 | g_free(srch); |
| 1135 | return; | |
| 1136 | } | |
| 1137 | } | |
| 1138 | ||
| 3466 | 1139 | static void agg_change_passwd(struct gaim_connection *gc, const char *old, const char *new) |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1140 | { |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1141 | struct agg_http *hpass = g_new0(struct agg_http, 1); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1142 | gchar *u = gg_urlencode(gc->username); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1143 | gchar *p = gg_urlencode(gc->password); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1144 | gchar *enew = gg_urlencode(new); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1145 | gchar *eold = gg_urlencode(old); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1146 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1147 | hpass->gc = gc; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1148 | hpass->type = AGG_HTTP_PASSWORD_CHANGE; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1149 | hpass->form = AGG_REGISTER_DATA_FORM; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1150 | hpass->host = GG_REGISTER_HOST; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1151 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1152 | /* We are using old password as place for email - it's ugly */ |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1153 | hpass->request = g_strdup_printf("fmnumber=%s&fmpwd=%s&pwd=%s&email=%s&code=%u", |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1154 | u, p, enew, eold, gg_http_hash(old, new)); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1155 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1156 | g_free(u); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1157 | g_free(p); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1158 | g_free(enew); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1159 | g_free(eold); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1160 | |
| 4634 | 1161 | if (proxy_connect(gc->account, GG_REGISTER_HOST, GG_REGISTER_PORT, http_req_callback, hpass) < 0) { |
| 3427 | 1162 | do_error_dialog(_("Unable to change Gadu-Gadu password"), |
| 1163 | _("Gaim was unable to change your password due to an error connecting " | |
| 1164 | "to the Gadu-Gadu server. Please try again later."), GAIM_ERROR); | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1165 | g_free(hpass->request); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1166 | g_free(hpass); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1167 | return; |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1168 | } |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1169 | } |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1170 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1171 | static GList *agg_actions(struct gaim_connection *gc) |
| 2393 | 1172 | { |
| 1173 | GList *m = NULL; | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1174 | struct proto_actions_menu *pam; |
| 2393 | 1175 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1176 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1177 | pam->label = _("Directory Search"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1178 | pam->callback = show_find_info; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1179 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1180 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1181 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1182 | m = g_list_append(m, NULL); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1183 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1184 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1185 | pam->label = _("Change Password"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1186 | pam->callback = show_change_passwd; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1187 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1188 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1189 | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1190 | m = g_list_append(m, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1191 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1192 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1193 | pam->label = _("Import Buddy List from Server"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1194 | pam->callback = import_buddies_server; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1195 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1196 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1197 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1198 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1199 | pam->label = _("Export Buddy List to Server"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1200 | pam->callback = export_buddies_server; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1201 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1202 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1203 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1204 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1205 | pam->label = _("Delete Buddy List from Server"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1206 | pam->callback = delete_buddies_server; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1207 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4229
diff
changeset
|
1208 | m = g_list_append(m, pam); |
| 2393 | 1209 | |
| 1210 | return m; | |
| 1211 | } | |
| 1212 | ||
| 1213 | static void agg_get_info(struct gaim_connection *gc, char *who) | |
| 1214 | { | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1215 | struct agg_http *srch = g_new0(struct agg_http, 1); |
| 2393 | 1216 | srch->gc = gc; |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1217 | srch->type = AGG_HTTP_SEARCH; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1218 | srch->form = AGG_PUBDIR_SEARCH_FORM; |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1219 | srch->host = GG_PUBDIR_HOST; |
| 2393 | 1220 | |
| 1221 | /* If it's invalid uin then maybe it's nickname? */ | |
| 1222 | if (invalid_uin(who)) { | |
| 4051 | 1223 | gchar *new_who = charset_convert(who, "UTF-8", "CP1250"); |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1224 | gchar *enew_who = gg_urlencode(new_who); |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1225 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1226 | g_free(new_who); |
| 2393 | 1227 | |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1228 | srch->request = g_strdup_printf("Mode=0&FirstName=%s&LastName=%s&Gender=%d" |
|
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1229 | "&NickName=%s&City=%s&MinBirth=%d&MaxBirth=%d", |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1230 | "", "", AGG_GENDER_NONE, enew_who, "", 0, 0); |
| 2393 | 1231 | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1232 | g_free(enew_who); |
| 2393 | 1233 | } else |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1234 | srch->request = g_strdup_printf("Mode=3&UserId=%s", who); |
| 2393 | 1235 | |
| 4634 | 1236 | if (proxy_connect(gc->account, GG_PUBDIR_HOST, GG_PUBDIR_PORT, http_req_callback, srch) < 0) { |
| 3427 | 1237 | do_error_dialog(_("Unable to access user profile."), |
| 4059 | 1238 | _("Gaim was unable to access this user's profile due to an error " |
| 3427 | 1239 | "connecting to the directory server. Please try again later."), GAIM_ERROR); |
|
2792
f40db99e87c7
[gaim-migrate @ 2805]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2791
diff
changeset
|
1240 | g_free(srch->request); |
| 2393 | 1241 | g_free(srch); |
| 1242 | return; | |
| 1243 | } | |
| 1244 | } | |
| 1245 | ||
| 4687 | 1246 | static const char *agg_list_icon(struct gaim_account *a, struct buddy *b) |
| 2393 | 1247 | { |
| 4687 | 1248 | return "gadu-gadu"; |
| 1249 | } | |
| 4916 | 1250 | |
| 1251 | static void agg_list_emblems(struct buddy *b, char **se, char **sw, char **nw, char **ne) | |
| 1252 | { | |
| 1253 | int status; | |
| 1254 | if (b->present == 0) | |
| 1255 | *se = "offline"; | |
| 1256 | else if (b->uc == UC_UNAVAILABLE) | |
| 1257 | *se = "away"; | |
| 1258 | else { | |
| 1259 | status = b->uc >> 5; | |
| 1260 | /* Drop all masks */ | |
| 1261 | status &= ~(GG_STATUS_FRIENDS_MASK); | |
| 1262 | if (status == GG_STATUS_BUSY) | |
| 1263 | *se = "busy"; | |
| 1264 | else if (status == GG_STATUS_INVISIBLE) | |
| 1265 | *se = "invisiible"; | |
| 1266 | } | |
| 2393 | 1267 | } |
| 4916 | 1268 | |
| 2393 | 1269 | |
| 1270 | static void agg_set_permit_deny_dummy(struct gaim_connection *gc) | |
| 1271 | { | |
| 1272 | /* It's implemented on client side because GG server doesn't support this */ | |
| 1273 | } | |
| 1274 | ||
| 4349 | 1275 | static void agg_permit_deny_dummy(struct gaim_connection *gc, const char *who) |
| 2393 | 1276 | { |
| 1277 | /* It's implemented on client side because GG server doesn't support this */ | |
| 1278 | } | |
| 1279 | ||
| 1280 | static struct prpl *my_protocol = NULL; | |
| 1281 | ||
| 3630 | 1282 | G_MODULE_EXPORT void gg_init(struct prpl *ret) |
| 2393 | 1283 | { |
| 3572 | 1284 | struct proto_user_opt *puo; |
| 2393 | 1285 | ret->protocol = PROTO_GADUGADU; |
| 1286 | ret->options = 0; | |
| 3572 | 1287 | ret->name = g_strdup("Gadu-Gadu"); |
| 2393 | 1288 | ret->list_icon = agg_list_icon; |
| 4916 | 1289 | ret->list_emblems = agg_list_emblems; |
| 2393 | 1290 | ret->away_states = agg_away_states; |
| 1291 | ret->actions = agg_actions; | |
| 1292 | ret->buddy_menu = agg_buddy_menu; | |
| 1293 | ret->chat_info = NULL; | |
| 1294 | ret->login = agg_login; | |
| 1295 | ret->close = agg_close; | |
| 1296 | ret->send_im = agg_send_im; | |
| 1297 | ret->set_info = NULL; | |
| 1298 | ret->get_info = agg_get_info; | |
| 1299 | ret->set_away = agg_set_away; | |
| 1300 | ret->set_dir = NULL; | |
| 1301 | ret->get_dir = agg_get_info; | |
| 1302 | ret->dir_search = agg_dir_search; | |
| 1303 | ret->set_idle = NULL; | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1304 | ret->change_passwd = agg_change_passwd; |
| 2393 | 1305 | ret->add_buddy = agg_add_buddy; |
| 1306 | ret->add_buddies = agg_add_buddies; | |
| 1307 | ret->remove_buddy = agg_rem_buddy; | |
| 1308 | ret->add_permit = agg_permit_deny_dummy; | |
| 1309 | ret->add_deny = agg_permit_deny_dummy; | |
| 1310 | ret->rem_permit = agg_permit_deny_dummy; | |
| 1311 | ret->rem_deny = agg_permit_deny_dummy; | |
| 1312 | ret->set_permit_deny = agg_set_permit_deny_dummy; | |
| 1313 | ret->warn = NULL; | |
| 1314 | ret->join_chat = NULL; | |
| 1315 | ret->chat_invite = NULL; | |
| 1316 | ret->chat_leave = NULL; | |
| 1317 | ret->chat_whisper = NULL; | |
| 1318 | ret->chat_send = NULL; | |
| 1319 | ret->keepalive = agg_keepalive; | |
| 1320 | ret->normalize = NULL; | |
| 3572 | 1321 | |
| 1322 | puo = g_new0(struct proto_user_opt, 1); | |
| 1323 | puo->label = g_strdup(_("Nick:")); | |
| 1324 | puo->def = g_strdup(_("Gadu-Gadu User")); | |
| 1325 | puo->pos = USEROPT_NICK; | |
| 1326 | ret->user_opts = g_list_append(ret->user_opts, puo); | |
| 1327 | ||
| 2393 | 1328 | my_protocol = ret; |
| 1329 | } | |
| 1330 | ||
| 1331 | #ifndef STATIC | |
| 1332 | ||
| 3630 | 1333 | G_MODULE_EXPORT void gaim_prpl_init(struct prpl *prpl) |
| 2393 | 1334 | { |
| 3572 | 1335 | gg_init(prpl); |
| 1336 | prpl->plug->desc.api_version = PLUGIN_API_VERSION; | |
| 2393 | 1337 | } |
| 1338 | ||
| 1339 | #endif | |
|
2846
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1340 | |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1341 | /* |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1342 | * Local variables: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1343 | * c-indentation-style: k&r |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1344 | * c-basic-offset: 8 |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1345 | * indent-tabs-mode: notnil |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1346 | * End: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1347 | * |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1348 | * vim: shiftwidth=8: |
|
4f0435806f95
[gaim-migrate @ 2859]
Arkadiusz Miskiewicz <arekm@maven.pl>
parents:
2835
diff
changeset
|
1349 | */ |