libpurple/proxy.c

Wed, 28 Sep 2016 09:32:19 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 28 Sep 2016 09:32:19 -0500
changeset 38066
2e94b6fa06a0
parent 37965
b67fb3fb5f85
child 38323
568872933468
permissions
-rw-r--r--

Merged in CMaiku/pidgin (pull request #136)

Windows build fixes

37460
f5bdb19e56b8 Fix some crashes
Gary Kramlich <grim@reaperworld.com>
parents: 37451
diff changeset
1 /* purple
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7982
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7982
diff changeset
5 * source distribution.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 * (at your option) any later version.
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 * GNU General Public License for more details.
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19840
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 */
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
23 /* this is a little piece of code to handle proxy connection */
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24 /* it is intended to : 1st handle http proxy, using the CONNECT command
6856
5ed6b8356ebc [gaim-migrate @ 7401]
Mark Doliner <markdoliner@pidgin.im>
parents: 6621
diff changeset
25 , 2nd provide an easy way to add socks support
5ed6b8356ebc [gaim-migrate @ 7401]
Mark Doliner <markdoliner@pidgin.im>
parents: 6621
diff changeset
26 , 3rd draw women to it like flies to honey */
31738
c0a7971ce0d2 purple: Fix some compiler warnings related to new API and missing prototypes.
Paul Aurich <darkrain42@pidgin.im>
parents: 31678
diff changeset
27 #define _PURPLE_PROXY_C_
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
29 #include "internal.h"
34567
ea5103f66b0e Refactor the codebase to use PurpleHash
Ankit Vani <a@nevitus.org>
parents: 34558
diff changeset
30 #include "ciphers/md5hash.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
31 #include "debug.h"
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
32 #include "http.h"
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
33 #include "notify.h"
12391
2866c00556d9 [gaim-migrate @ 14698]
Ethan Blanton <elb@pidgin.im>
parents: 12273
diff changeset
34 #include "ntlm.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
35 #include "prefs.h"
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
36 #include "proxy.h"
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
37 #include "purple-gio.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
38 #include "util.h"
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3376
diff changeset
39
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
40 #include <gio/gio.h>
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
41
32299
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
42 struct _PurpleProxyInfo
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
43 {
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
44 PurpleProxyType type; /* The proxy type. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
45
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
46 char *host; /* The host. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
47 int port; /* The port number. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
48 char *username; /* The username. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
49 char *password; /* The password. */
32299
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
50 };
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
51
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
52 struct _PurpleProxyConnectData {
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
53 void *handle;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
54 PurpleProxyConnectFunction connect_cb;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
55 gpointer data;
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
56 gchar *host;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
57 int port;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
58 int fd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
59 PurpleProxyInfo *gpi;
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
60
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
61 GCancellable *cancellable;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
62 };
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
63
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
64 static PurpleProxyInfo *global_proxy_info = NULL;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
65
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
66 static GSList *handles = NULL;
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
67
16037
e00a903d17a2 I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
68 /*
e00a903d17a2 I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
69 * TODO: Eventually (GObjectification) this bad boy will be removed, because it is
e00a903d17a2 I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
70 * a gross fix for a crashy problem.
e00a903d17a2 I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
71 */
e00a903d17a2 I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
72 #define PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data) g_slist_find(handles, connect_data)
e00a903d17a2 I commonly see a crash in which socket_ready_cb(), shortly after a laptop wakes from sleep, is passed invalid (previously freed) connect_data. It looks like this:
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
73
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
74 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
75 * Proxy structure API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
76 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
77 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
78 purple_proxy_info_new(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
79 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
80 return g_new0(PurpleProxyInfo, 1);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
81 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
82
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
83 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
84 purple_proxy_info_destroy(PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
85 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
86 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
87
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
88 g_free(info->host);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
89 g_free(info->username);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
90 g_free(info->password);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
91
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
92 g_free(info);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
93 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
94
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
95 void
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
96 purple_proxy_info_set_proxy_type(PurpleProxyInfo *info, PurpleProxyType type)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
97 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
98 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
99
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
100 info->type = type;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
101 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
102
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
103 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
104 purple_proxy_info_set_host(PurpleProxyInfo *info, const char *host)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
105 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
106 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
107
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
108 g_free(info->host);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
109 info->host = g_strdup(host);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
110 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
111
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
112 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
113 purple_proxy_info_set_port(PurpleProxyInfo *info, int port)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
114 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
115 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
116
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
117 info->port = port;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
118 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
119
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
120 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
121 purple_proxy_info_set_username(PurpleProxyInfo *info, const char *username)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
122 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
123 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
124
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
125 g_free(info->username);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
126 info->username = g_strdup(username);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
127 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
128
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
129 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
130 purple_proxy_info_set_password(PurpleProxyInfo *info, const char *password)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
131 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
132 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
133
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
134 g_free(info->password);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
135 info->password = g_strdup(password);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
136 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
137
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
138 PurpleProxyType
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
139 purple_proxy_info_get_proxy_type(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
140 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
141 g_return_val_if_fail(info != NULL, PURPLE_PROXY_NONE);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
142
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
143 return info->type;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
144 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
145
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
146 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
147 purple_proxy_info_get_host(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
148 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
149 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
150
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
151 return info->host;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
152 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
153
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
154 int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
155 purple_proxy_info_get_port(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
156 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
157 g_return_val_if_fail(info != NULL, 0);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
158
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
159 return info->port;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
160 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
161
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
162 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
163 purple_proxy_info_get_username(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
164 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
165 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
166
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
167 return info->username;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
168 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
169
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
170 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
171 purple_proxy_info_get_password(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
172 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
173 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
174
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
175 return info->password;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
176 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
177
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
178 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
179 * Global Proxy API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
180 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
181 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
182 purple_global_proxy_get_info(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
183 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
184 return global_proxy_info;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
185 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
186
25858
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
187 void
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
188 purple_global_proxy_set_info(PurpleProxyInfo *info)
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
189 {
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
190 g_return_if_fail(info != NULL);
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
191
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
192 purple_proxy_info_destroy(global_proxy_info);
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
193
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
194 global_proxy_info = info;
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
195 }
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
196
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
197
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
198 /* index in gproxycmds below, keep them in sync */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
199 #define GNOME_PROXY_MODE 0
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
200 #define GNOME_PROXY_USE_SAME_PROXY 1
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
201 #define GNOME_PROXY_SOCKS_HOST 2
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
202 #define GNOME_PROXY_SOCKS_PORT 3
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
203 #define GNOME_PROXY_HTTP_HOST 4
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
204 #define GNOME_PROXY_HTTP_PORT 5
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
205 #define GNOME_PROXY_HTTP_USER 6
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
206 #define GNOME_PROXY_HTTP_PASS 7
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
207 #define GNOME2_CMDS 0
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
208 #define GNOME3_CMDS 1
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
209
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
210 /* detect proxy settings for gnome2/gnome3 */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
211 static const char* gproxycmds[][2] = {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
212 { "gconftool-2 -g /system/proxy/mode" , "gsettings get org.gnome.system.proxy mode" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
213 { "gconftool-2 -g /system/http_proxy/use_same_proxy", "gsettings get org.gnome.system.proxy use-same-proxy" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
214 { "gconftool-2 -g /system/proxy/socks_host", "gsettings get org.gnome.system.proxy.socks host" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
215 { "gconftool-2 -g /system/proxy/socks_port", "gsettings get org.gnome.system.proxy.socks port" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
216 { "gconftool-2 -g /system/http_proxy/host", "gsettings get org.gnome.system.proxy.http host" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
217 { "gconftool-2 -g /system/http_proxy/port", "gsettings get org.gnome.system.proxy.http port"},
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
218 { "gconftool-2 -g /system/http_proxy/authentication_user", "gsettings get org.gnome.system.proxy.http authentication-user" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
219 { "gconftool-2 -g /system/http_proxy/authentication_password", "gsettings get org.gnome.system.proxy.http authentication-password" },
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
220 };
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
221
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
222 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
223 * purple_gnome_proxy_get_parameter:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
224 * @parameter: One of the GNOME_PROXY_x constants defined above
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
225 * @gnome_version: GNOME2_CMDS or GNOME3_CMDS
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
226 *
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
227 * This is a utility function used to retrieve proxy parameter values from
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
228 * GNOME 2/3 environment.
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
229 *
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
230 * Returns: The value of requested proxy parameter
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
231 */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
232 static char *
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
233 purple_gnome_proxy_get_parameter(guint8 parameter, guint8 gnome_version)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
234 {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
235 gchar *param, *err;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
236 size_t param_len;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
237
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
238 if (parameter > GNOME_PROXY_HTTP_PASS)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
239 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
240 if (gnome_version > GNOME3_CMDS)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
241 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
242
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
243 if (!g_spawn_command_line_sync(gproxycmds[parameter][gnome_version],
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
244 &param, &err, NULL, NULL))
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
245 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
246 g_free(err);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
247
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
248 g_strstrip(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
249 if (param[0] == '\'' || param[0] == '\"') {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
250 param_len = strlen(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
251 memmove(param, param + 1, param_len); /* copy last \0 too */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
252 --param_len;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
253 if (param_len > 0 && (param[param_len - 1] == '\'' || param[param_len - 1] == '\"'))
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
254 param[param_len - 1] = '\0';
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
255 g_strstrip(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
256 }
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
257
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
258 return param;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
259 }
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
260
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
261 static PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
262 purple_gnome_proxy_get_info(void)
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
263 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
264 static PurpleProxyInfo info = {0, NULL, 0, NULL, NULL};
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
265 gboolean use_same_proxy = FALSE;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
266 gchar *tmp;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
267 guint8 gnome_version = GNOME3_CMDS;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
268
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
269 tmp = g_find_program_in_path("gsettings");
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
270 if (tmp == NULL) {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
271 tmp = g_find_program_in_path("gconftool-2");
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
272 gnome_version = GNOME2_CMDS;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
273 }
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
274 if (tmp == NULL)
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
275 return purple_global_proxy_get_info();
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
276
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
277 g_free(tmp);
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
278
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
279 /* Check whether to use a proxy. */
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
280 tmp = purple_gnome_proxy_get_parameter(GNOME_PROXY_MODE, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
281 if (!tmp)
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
282 return purple_global_proxy_get_info();
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
283
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
284 if (purple_strequal(tmp, "none")) {
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
285 info.type = PURPLE_PROXY_NONE;
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
286 g_free(tmp);
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
287 return &info;
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
288 }
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
289
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
290 if (!purple_strequal(tmp, "manual")) {
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
291 /* Unknown setting. Fallback to using our global proxy settings. */
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
292 g_free(tmp);
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
293 return purple_global_proxy_get_info();
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
294 }
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
295
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
296 g_free(tmp);
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
297
22560
510c8edb3854 Bring back the lines that free info.whatever on subsequent calls to
Mark Doliner <markdoliner@pidgin.im>
parents: 22559
diff changeset
298 /* Free the old fields */
37426
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
299 g_free(info.host);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
300 info.host = NULL;
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
301 g_free(info.username);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
302 info.username = NULL;
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
303 g_free(info.password);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
304 info.password = NULL;
22560
510c8edb3854 Bring back the lines that free info.whatever on subsequent calls to
Mark Doliner <markdoliner@pidgin.im>
parents: 22559
diff changeset
305
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
306 tmp = purple_gnome_proxy_get_parameter(GNOME_PROXY_USE_SAME_PROXY, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
307 if (!tmp)
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
308 return purple_global_proxy_get_info();
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
309
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
310 if (purple_strequal(tmp, "true"))
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
311 use_same_proxy = TRUE;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
312
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
313 g_free(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
314
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
315 if (!use_same_proxy) {
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
316 info.host = purple_gnome_proxy_get_parameter(GNOME_PROXY_SOCKS_HOST, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
317 if (!info.host)
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
318 return purple_global_proxy_get_info();
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
319 }
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
320
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
321 if (!use_same_proxy && (info.host != NULL) && (*info.host != '\0')) {
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
322 info.type = PURPLE_PROXY_SOCKS5;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
323 tmp = purple_gnome_proxy_get_parameter(GNOME_PROXY_SOCKS_PORT, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
324 if (!tmp) {
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
325 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
326 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
327 return purple_global_proxy_get_info();
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
328 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
329 info.port = atoi(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
330 g_free(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
331 } else {
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
332 g_free(info.host);
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
333 info.host = purple_gnome_proxy_get_parameter(GNOME_PROXY_HTTP_HOST, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
334 if (!info.host)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
335 return purple_global_proxy_get_info();
24316
88c65c05a21e Some minor cleanup; removal of unnecessary frees and setting stuff to NULL
Daniel Atallah <datallah@pidgin.im>
parents: 24315
diff changeset
336
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
337 /* If we get this far then we know we're using an HTTP proxy */
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
338 info.type = PURPLE_PROXY_HTTP;
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
339
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
340 if (*info.host == '\0')
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
341 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
342 purple_debug_info("proxy", "Gnome proxy settings are set to "
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
343 "'manual' but no suitable proxy server is specified. Using "
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
344 "Pidgin's proxy settings instead.\n");
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
345 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
346 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
347 return purple_global_proxy_get_info();
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
348 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
349
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
350 info.username = purple_gnome_proxy_get_parameter(GNOME_PROXY_HTTP_USER, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
351 if (!info.username)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
352 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
353 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
354 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
355 return purple_global_proxy_get_info();
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
356 }
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
357
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
358 info.password = purple_gnome_proxy_get_parameter(GNOME_PROXY_HTTP_PASS, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
359 if (!info.password)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
360 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
361 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
362 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
363 g_free(info.username);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
364 info.username = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
365 return purple_global_proxy_get_info();
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
366 }
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
367
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
368 tmp = purple_gnome_proxy_get_parameter(GNOME_PROXY_HTTP_PORT, gnome_version);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
369 if (!tmp)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
370 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
371 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
372 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
373 g_free(info.username);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
374 info.username = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
375 g_free(info.password);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
376 info.password = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
377 return purple_global_proxy_get_info();
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
378 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
379 info.port = atoi(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
380 g_free(tmp);
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
381 }
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
382
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
383 return &info;
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
384 }
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
385
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
386 #ifdef _WIN32
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
387
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
388 typedef BOOL (CALLBACK* LPFNWINHTTPGETIEPROXYCONFIG)(/*IN OUT*/ WINHTTP_CURRENT_USER_IE_PROXY_CONFIG* pProxyConfig);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
389
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
390 /* This modifies "host" in-place evilly */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
391 static void
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
392 _proxy_fill_hostinfo(PurpleProxyInfo *info, char *host, int default_port)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
393 {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
394 int port = default_port;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
395 char *d;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
396
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
397 d = g_strrstr(host, ":");
30057
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
398 if (d) {
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
399 *d = '\0';
30057
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
400
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
401 d++;
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
402 if (*d)
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
403 sscanf(d, "%d", &port);
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
404
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
405 if (port == 0)
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
406 port = default_port;
ab9790d588f9 Fix an invalid memory deref with Windows proxy settings when there's no ":port"
Marten Klencke <mklencke@gmx.net>
parents: 29365
diff changeset
407 }
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
408
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
409 purple_proxy_info_set_host(info, host);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
410 purple_proxy_info_set_port(info, port);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
411 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
412
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
413 static PurpleProxyInfo *
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
414 purple_win32_proxy_get_info(void)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
415 {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
416 static LPFNWINHTTPGETIEPROXYCONFIG MyWinHttpGetIEProxyConfig = NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
417 static gboolean loaded = FALSE;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
418 static PurpleProxyInfo info = {0, NULL, 0, NULL, NULL};
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
419
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
420 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG ie_proxy_config;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
421
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
422 if (!loaded) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
423 loaded = TRUE;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
424 MyWinHttpGetIEProxyConfig = (LPFNWINHTTPGETIEPROXYCONFIG)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
425 wpurple_find_and_loadproc("winhttp.dll", "WinHttpGetIEProxyConfigForCurrentUser");
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
426 if (!MyWinHttpGetIEProxyConfig)
27497
2dc5a0e0c4c2 Increase the logging level of some debugging messages that seemed to be a
Mauro Brasil <mauro.brasil@tqi.com.br>
parents: 27249
diff changeset
427 purple_debug_warning("proxy", "Unable to read Windows Proxy Settings.\n");
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
428 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
429
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
430 if (!MyWinHttpGetIEProxyConfig)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
431 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
432
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
433 ZeroMemory(&ie_proxy_config, sizeof(ie_proxy_config));
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
434 if (!MyWinHttpGetIEProxyConfig(&ie_proxy_config)) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
435 purple_debug_error("proxy", "Error reading Windows Proxy Settings(%lu).\n", GetLastError());
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
436 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
437 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
438
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
439 /* We can't do much if it is autodetect*/
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
440 if (ie_proxy_config.fAutoDetect) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
441 purple_debug_error("proxy", "Windows Proxy Settings set to autodetect (not supported).\n");
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
442
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
443 /* TODO: For 3.0.0 we'll revisit this (maybe)*/
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
444
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
445 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
446
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
447 } else if (ie_proxy_config.lpszProxy) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
448 gchar *proxy_list = g_utf16_to_utf8(ie_proxy_config.lpszProxy, -1,
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
449 NULL, NULL, NULL);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
450
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
451 /* We can't do anything about the bypass list, as we don't have the url */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
452 /* TODO: For 3.0.0 we'll revisit this*/
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
453
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
454 /* There are proxy settings for several protocols */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
455 if (proxy_list && *proxy_list) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
456 char *specific = NULL, *tmp;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
457
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
458 /* If there is only a global proxy, which means "HTTP" */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
459 if (!strchr(proxy_list, ';') || (specific = g_strstr_len(proxy_list, -1, "http=")) != NULL) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
460
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
461 if (specific) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
462 specific += strlen("http=");
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
463 tmp = strchr(specific, ';');
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
464 if (tmp)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
465 *tmp = '\0';
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
466 /* specific now points the proxy server (and port) */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
467 } else
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
468 specific = proxy_list;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
469
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
470 purple_proxy_info_set_proxy_type(&info, PURPLE_PROXY_HTTP);
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
471 _proxy_fill_hostinfo(&info, specific, 80);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
472 /* TODO: is there a way to set the username/password? */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
473 purple_proxy_info_set_username(&info, NULL);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
474 purple_proxy_info_set_password(&info, NULL);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
475
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
476 purple_debug_info("proxy", "Windows Proxy Settings: HTTP proxy: '%s:%d'.\n",
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
477 purple_proxy_info_get_host(&info),
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
478 purple_proxy_info_get_port(&info));
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
479
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
480 } else if ((specific = g_strstr_len(proxy_list, -1, "socks=")) != NULL) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
481
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
482 specific += strlen("socks=");
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
483 tmp = strchr(specific, ';');
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
484 if (tmp)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
485 *tmp = '\0';
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
486 /* specific now points the proxy server (and port) */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
487
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
488 purple_proxy_info_set_proxy_type(&info, PURPLE_PROXY_SOCKS5);
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
489 _proxy_fill_hostinfo(&info, specific, 1080);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
490 /* TODO: is there a way to set the username/password? */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
491 purple_proxy_info_set_username(&info, NULL);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
492 purple_proxy_info_set_password(&info, NULL);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
493
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
494 purple_debug_info("proxy", "Windows Proxy Settings: SOCKS5 proxy: '%s:%d'.\n",
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
495 purple_proxy_info_get_host(&info),
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
496 purple_proxy_info_get_port(&info));
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
497
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
498 } else {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
499
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
500 purple_debug_info("proxy", "Windows Proxy Settings: No supported proxy specified.\n");
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
501
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
502 purple_proxy_info_set_proxy_type(&info, PURPLE_PROXY_NONE);
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
503
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
504 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
505 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
506
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
507 /* TODO: Fix API to be able look at proxy bypass settings */
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
508
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
509 g_free(proxy_list);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
510 } else {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
511 purple_debug_info("proxy", "No Windows proxy set.\n");
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
512 purple_proxy_info_set_proxy_type(&info, PURPLE_PROXY_NONE);
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
513 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
514
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
515 if (ie_proxy_config.lpszAutoConfigUrl)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
516 GlobalFree(ie_proxy_config.lpszAutoConfigUrl);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
517 if (ie_proxy_config.lpszProxy)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
518 GlobalFree(ie_proxy_config.lpszProxy);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
519 if (ie_proxy_config.lpszProxyBypass)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
520 GlobalFree(ie_proxy_config.lpszProxyBypass);
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
521
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
522 return &info;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
523 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
524 #endif
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
525
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
526
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
527 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
528 * Proxy API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
529 **************************************************************************/
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3867
diff changeset
530
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
531 /*
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
532 * Whoever calls this needs to have called
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
533 * purple_proxy_connect_data_disconnect() beforehand.
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
534 */
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
535 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
536 purple_proxy_connect_data_destroy(PurpleProxyConnectData *connect_data)
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
537 {
37189
b61329019afe Ad a check to make sure that connect_data is valid before freeing it to avoid double-frees
Daniel Atallah <datallah@pidgin.im>
parents: 36256
diff changeset
538 if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data))
b61329019afe Ad a check to make sure that connect_data is valid before freeing it to avoid double-frees
Daniel Atallah <datallah@pidgin.im>
parents: 36256
diff changeset
539 return;
b61329019afe Ad a check to make sure that connect_data is valid before freeing it to avoid double-frees
Daniel Atallah <datallah@pidgin.im>
parents: 36256
diff changeset
540
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
541 handles = g_slist_remove(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
542
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
543 if(G_IS_CANCELLABLE(connect_data->cancellable)) {
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
544 g_cancellable_cancel(connect_data->cancellable);
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
545
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
546 g_object_unref(G_OBJECT(connect_data->cancellable));
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
547
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
548 connect_data->cancellable = NULL;
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
549 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
550
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
551 g_free(connect_data->host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
552 g_free(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
553 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
554
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
555 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
556 * purple_proxy_connect_data_disconnect:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
557 * @error_message: An error message explaining why the connection
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
558 * failed. This will be passed to the callback function
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
559 * specified in the call to purple_proxy_connect(). If the
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
560 * connection was successful then pass in null.
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
561 *
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
562 * Free all information dealing with a connection attempt and
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
563 * reset the connect_data to prepare for it to try to connect
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
564 * to another IP address.
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
565 *
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
566 * If an error message is passed in, then we know the connection
37537
9e1b392c606b Remove unused data and related, unused code from PurpleProxyConnectData
Mike Ruprecht <cmaiku@gmail.com>
parents: 37536
diff changeset
567 * attempt failed. If so, we call the callback with the given
9e1b392c606b Remove unused data and related, unused code from PurpleProxyConnectData
Mike Ruprecht <cmaiku@gmail.com>
parents: 37536
diff changeset
568 * error message, then destroy the connect_data.
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
569 */
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
570 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
571 purple_proxy_connect_data_disconnect(PurpleProxyConnectData *connect_data, const gchar *error_message)
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
572 {
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
573 if (connect_data->fd >= 0)
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
574 {
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
575 close(connect_data->fd);
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
576 connect_data->fd = -1;
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
577 }
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
578
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
579 if (error_message != NULL)
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
580 {
27497
2dc5a0e0c4c2 Increase the logging level of some debugging messages that seemed to be a
Mauro Brasil <mauro.brasil@tqi.com.br>
parents: 27249
diff changeset
581 purple_debug_error("proxy", "Connection attempt failed: %s\n",
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
582 error_message);
37536
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
583
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
584 /* Everything failed! Tell the originator of the request. */
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
585 connect_data->connect_cb(connect_data->data, -1, error_message);
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
586 purple_proxy_connect_data_destroy(connect_data);
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
587 }
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
588 }
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
589
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
590 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
591 purple_proxy_connect_data_connected(PurpleProxyConnectData *connect_data)
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
592 {
27943
129a272c34f2 Add an explicit "Connected" message right before passing control from proxy subsystem to whomever called purple_proxy_connect.
Paul Aurich <darkrain42@pidgin.im>
parents: 27635
diff changeset
593 purple_debug_info("proxy", "Connected to %s:%d.\n",
129a272c34f2 Add an explicit "Connected" message right before passing control from proxy subsystem to whomever called purple_proxy_connect.
Paul Aurich <darkrain42@pidgin.im>
parents: 27635
diff changeset
594 connect_data->host, connect_data->port);
129a272c34f2 Add an explicit "Connected" message right before passing control from proxy subsystem to whomever called purple_proxy_connect.
Paul Aurich <darkrain42@pidgin.im>
parents: 27635
diff changeset
595
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
596 connect_data->connect_cb(connect_data->data, connect_data->fd, NULL);
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
597
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
598 /*
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
599 * We've passed the file descriptor to the protocol, so it's no longer
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
600 * our responsibility, and we should be careful not to free it when
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
601 * we destroy the connect_data.
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
602 */
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
603 connect_data->fd = -1;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
604
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
605 purple_proxy_connect_data_disconnect(connect_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
606 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
607 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
608
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
609 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
610 purple_proxy_get_setup(PurpleAccount *account)
1087
bc9c6b635358 [gaim-migrate @ 1097]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
611 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
612 PurpleProxyInfo *gpi = NULL;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
613 const gchar *tmp;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
614
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
615 /* This is used as a fallback so we don't overwrite the selected proxy type */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
616 static PurpleProxyInfo *tmp_none_proxy_info = NULL;
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
617 if (!tmp_none_proxy_info) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
618 tmp_none_proxy_info = purple_proxy_info_new();
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
619 purple_proxy_info_set_proxy_type(tmp_none_proxy_info, PURPLE_PROXY_NONE);
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
620 }
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
621
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
622 if (account && purple_account_get_proxy_info(account) != NULL) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
623 gpi = purple_account_get_proxy_info(account);
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
624 if (purple_proxy_info_get_proxy_type(gpi) == PURPLE_PROXY_USE_GLOBAL)
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
625 gpi = NULL;
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
626 }
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
627 if (gpi == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
628 if (purple_running_gnome())
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
629 gpi = purple_gnome_proxy_get_info();
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
630 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
631 gpi = purple_global_proxy_get_info();
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
632 }
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
633
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
634 if (purple_proxy_info_get_proxy_type(gpi) == PURPLE_PROXY_USE_ENVVAR) {
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
635 if ((tmp = g_getenv("HTTP_PROXY")) != NULL ||
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
636 (tmp = g_getenv("http_proxy")) != NULL ||
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
637 (tmp = g_getenv("HTTPPROXY")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
638 {
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
639 PurpleHttpURL *url;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
640
9129
9510867e614f [gaim-migrate @ 9907]
Nathan Walp <nwalp@pidgin.im>
parents: 9100
diff changeset
641 /* http_proxy-format:
9227
95c28297b72c [gaim-migrate @ 10023]
Don Seiler <rizzo@gentoo.org>
parents: 9148
diff changeset
642 * export http_proxy="http://user:passwd@your.proxy.server:port/"
7652
d60ba2565661 [gaim-migrate @ 8296]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7475
diff changeset
643 */
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
644 url = purple_http_url_parse(tmp);
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
645 if (!url) {
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
646 purple_debug_warning("proxy", "Couldn't parse URL\n");
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
647 return gpi;
7652
d60ba2565661 [gaim-migrate @ 8296]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7475
diff changeset
648 }
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
649
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
650 purple_proxy_info_set_host(gpi, purple_http_url_get_host(url));
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
651 purple_proxy_info_set_username(gpi, purple_http_url_get_username(url));
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
652 purple_proxy_info_set_password(gpi, purple_http_url_get_password(url));
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
653 purple_proxy_info_set_port(gpi, purple_http_url_get_port(url));
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
654
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
655 /* XXX: Do we want to skip this step if user/password/port were part of url? */
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
656 if ((tmp = g_getenv("HTTP_PROXY_USER")) != NULL ||
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
657 (tmp = g_getenv("http_proxy_user")) != NULL ||
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
658 (tmp = g_getenv("HTTPPROXYUSER")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
659 purple_proxy_info_set_username(gpi, tmp);
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
660
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
661 if ((tmp = g_getenv("HTTP_PROXY_PASS")) != NULL ||
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
662 (tmp = g_getenv("http_proxy_pass")) != NULL ||
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
663 (tmp = g_getenv("HTTPPROXYPASS")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
664 purple_proxy_info_set_password(gpi, tmp);
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
665
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
666 if ((tmp = g_getenv("HTTP_PROXY_PORT")) != NULL ||
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
667 (tmp = g_getenv("http_proxy_port")) != NULL ||
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
668 (tmp = g_getenv("HTTPPROXYPORT")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
669 purple_proxy_info_set_port(gpi, atoi(tmp));
10534
c28eef1b882a [gaim-migrate @ 11866]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10320
diff changeset
670 } else {
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
671 #ifdef _WIN32
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
672 PurpleProxyInfo *wgpi;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
673 if ((wgpi = purple_win32_proxy_get_info()) != NULL)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
674 return wgpi;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
675 #endif
10534
c28eef1b882a [gaim-migrate @ 11866]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10320
diff changeset
676 /* no proxy environment variable found, don't use a proxy */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
677 purple_debug_info("proxy", "No environment settings found, not using a proxy\n");
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
678 gpi = tmp_none_proxy_info;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
679 }
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
680
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
681 }
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
682
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
683 return gpi;
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
684 }
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
685
37533
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
686 /* Grabbed duplicate_fd() from GLib's testcases (gio/tests/socket.c).
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
687 * Can be dropped once this API has been converted to Gio.
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
688 */
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
689 static int
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
690 duplicate_fd (int fd)
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
691 {
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
692 #ifdef G_OS_WIN32
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
693 HANDLE newfd;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
694
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
695 if (!DuplicateHandle (GetCurrentProcess (),
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
696 (HANDLE)fd,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
697 GetCurrentProcess (),
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
698 &newfd,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
699 0,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
700 FALSE,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
701 DUPLICATE_SAME_ACCESS))
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
702 {
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
703 return -1;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
704 }
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
705
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
706 return (int)newfd;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
707 #else
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
708 return dup (fd);
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
709 #endif
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
710 }
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
711 /* End function grabbed from GLib */
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
712
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
713 static void
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
714 connect_to_host_cb(GObject *source, GAsyncResult *res, gpointer user_data)
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
715 {
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
716 PurpleProxyConnectData *connect_data = user_data;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
717 GSocketConnection *conn;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
718 GError *error = NULL;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
719 GSocket *socket;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
720
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
721 conn = g_socket_client_connect_to_host_finish(G_SOCKET_CLIENT(source),
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
722 res, &error);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
723 if (conn == NULL) {
37549
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
724 /* Ignore cancelled error as that signifies connect_data has
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
725 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
726 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
727 if (!g_error_matches(error, G_IO_ERROR,
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
728 G_IO_ERROR_CANCELLED)) {
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
729 purple_debug_error("proxy", "Unable to connect to "
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
730 "destination host: %s\n",
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
731 error->message);
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
732 purple_proxy_connect_data_disconnect(connect_data,
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
733 "Unable to connect to destination "
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
734 "host.\n");
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
735 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
736
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
737 g_clear_error(&error);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
738 return;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
739 }
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
740
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
741 socket = g_socket_connection_get_socket(conn);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
742 g_assert(socket != NULL);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
743
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
744 /* Duplicate the file descriptor, and then free the connection.
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
745 * libpurple's proxy code doesn't keep an object around for the
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
746 * lifetime of the connection. Therefore, in order to not leak
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
747 * memory, the GSocketConnection must be freed here. In order
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
748 * to avoid the double close/free of the file descriptor, the
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
749 * file descriptor is duplicated.
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
750 */
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
751 connect_data->fd = duplicate_fd(g_socket_get_fd(socket));
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
752 g_object_unref(conn);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
753
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
754 purple_proxy_connect_data_connected(connect_data);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
755 }
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
756
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
757 PurpleProxyConnectData *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
758 purple_proxy_connect(void *handle, PurpleAccount *account,
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
759 const char *host, int port,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
760 PurpleProxyConnectFunction connect_cb, gpointer data)
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
761 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
762 PurpleProxyConnectData *connect_data;
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
763 GSocketClient *client;
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
764 GError *error = NULL;
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
765
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
766 g_return_val_if_fail(host != NULL, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
767 g_return_val_if_fail(port > 0, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
768 g_return_val_if_fail(connect_cb != NULL, NULL);
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
769
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
770 connect_data = g_new0(PurpleProxyConnectData, 1);
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
771 connect_data->fd = -1;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
772 connect_data->handle = handle;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
773 connect_data->connect_cb = connect_cb;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
774 connect_data->data = data;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
775 connect_data->host = g_strdup(host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
776 connect_data->port = port;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
777 connect_data->gpi = purple_proxy_get_setup(account);
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
778
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
779 client = purple_gio_socket_client_new(account, &error);
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
780
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
781 if (client == NULL) {
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
782 /* Assume it's a proxy error */
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
783 purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
784 error->message,
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
785 purple_request_cpar_from_account(account));
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
786 g_clear_error(&error);
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
787
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
788 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
789 return NULL;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
790 }
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3867
diff changeset
791
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
792 connect_data->cancellable = g_cancellable_new();
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
793
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
794 purple_debug_info("proxy", "Attempting connection to %s:%u\n",
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
795 host, port);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
796
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
797 g_socket_client_connect_to_host_async(client, host, port,
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
798 connect_data->cancellable, connect_to_host_cb,
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
799 connect_data);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
800 g_object_unref(client);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
801
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
802 handles = g_slist_prepend(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
803
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
804 return connect_data;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
805 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
806
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
807 static void
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
808 socks5_proxy_connect_cb(GObject *source, GAsyncResult *res, gpointer user_data)
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
809 {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
810 PurpleProxyConnectData *connect_data = user_data;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
811 GIOStream *stream;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
812 GError *error = NULL;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
813 GSocket *socket;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
814
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
815 stream = g_proxy_connect_finish(G_PROXY(source), res, &error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
816
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
817 if (stream == NULL) {
37549
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
818 /* Ignore cancelled error as that signifies connect_data has
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
819 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
820 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
821 if (!g_error_matches(error, G_IO_ERROR,
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
822 G_IO_ERROR_CANCELLED)) {
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
823 purple_debug_error("proxy", "Unable to connect to "
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
824 "destination host: %s\n",
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
825 error->message);
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
826 purple_proxy_connect_data_disconnect(connect_data,
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
827 "Unable to connect to destination "
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
828 "host.\n");
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
829 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
830
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
831 g_clear_error(&error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
832 return;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
833 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
834
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
835 if (!G_IS_SOCKET_CONNECTION(stream)) {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
836 purple_debug_error("proxy",
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
837 "GProxy didn't return a GSocketConnection.\n");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
838 purple_proxy_connect_data_disconnect(connect_data,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
839 "GProxy didn't return a GSocketConnection.\n");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
840 g_object_unref(stream);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
841 return;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
842 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
843
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
844 socket = g_socket_connection_get_socket(G_SOCKET_CONNECTION(stream));
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
845
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
846 /* Duplicate the file descriptor, and then free the connection.
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
847 * libpurple's proxy code doesn't keep an object around for the
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
848 * lifetime of the connection. Therefore, in order to not leak
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
849 * memory, the GSocketConnection (aka GIOStream here) must be
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
850 * freed here. In order to avoid the double close/free of the
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
851 * file descriptor, the file descriptor is duplicated.
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
852 */
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
853 connect_data->fd = duplicate_fd(g_socket_get_fd(socket));
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
854 g_object_unref(stream);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
855
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
856 purple_proxy_connect_data_connected(connect_data);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
857 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
858
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
859 /* This is called when we connect to the SOCKS5 proxy server (through any
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
860 * relevant account proxy)
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
861 */
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
862 static void
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
863 socks5_connect_to_host_cb(GObject *source, GAsyncResult *res,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
864 gpointer user_data)
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
865 {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
866 PurpleProxyConnectData *connect_data = user_data;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
867 GSocketConnection *conn;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
868 GError *error = NULL;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
869 GProxy *proxy;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
870 PurpleProxyInfo *info;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
871 GSocketAddress *addr;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
872 GInetSocketAddress *inet_addr;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
873 GSocketAddress *proxy_addr;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
874
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
875 conn = g_socket_client_connect_to_host_finish(G_SOCKET_CLIENT(source),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
876 res, &error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
877 if (conn == NULL) {
37549
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
878 /* Ignore cancelled error as that signifies connect_data has
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
879 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
880 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
881 if (!g_error_matches(error, G_IO_ERROR,
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
882 G_IO_ERROR_CANCELLED)) {
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
883 purple_debug_error("proxy", "Unable to connect to "
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
884 "SOCKS5 host: %s\n", error->message);
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
885 purple_proxy_connect_data_disconnect(connect_data,
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
886 "Unable to connect to SOCKS5 host.\n");
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
887 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
888
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
889 g_clear_error(&error);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
890 return;
32129
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
891 }
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
892
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
893 proxy = g_proxy_get_default_for_protocol("socks5");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
894 if (proxy == NULL) {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
895 purple_debug_error("proxy", "SOCKS5 proxy backend missing.\n");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
896 purple_proxy_connect_data_disconnect(connect_data,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
897 "SOCKS5 proxy backend missing.\n");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
898 g_object_unref(conn);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
899 return;
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
900 }
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
901
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
902 info = connect_data->gpi;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
903
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
904 addr = g_socket_connection_get_remote_address(conn, &error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
905 if (addr == NULL) {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
906 purple_debug_error("proxy", "Unable to retrieve SOCKS5 host "
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
907 "address from connection: %s\n",
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
908 error->message);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
909 purple_proxy_connect_data_disconnect(connect_data,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
910 "Unable to retrieve SOCKS5 host address from "
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
911 "connection");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
912 g_object_unref(conn);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
913 g_object_unref(proxy);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
914 g_clear_error(&error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
915 return;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
916 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
917
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
918 inet_addr = G_INET_SOCKET_ADDRESS(addr);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
919
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
920 proxy_addr = g_proxy_address_new(
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
921 g_inet_socket_address_get_address(inet_addr),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
922 g_inet_socket_address_get_port(inet_addr),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
923 "socks5", connect_data->host, connect_data->port,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
924 purple_proxy_info_get_username(info),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
925 purple_proxy_info_get_password(info));
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
926 g_object_unref(inet_addr);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
927
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
928 purple_debug_info("proxy", "Initiating SOCKS5 negotiation.\n");
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
929
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
930 purple_debug_info("proxy",
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
931 "Connecting to %s:%d via %s:%d using SOCKS5\n",
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
932 connect_data->host, connect_data->port,
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
933 purple_proxy_info_get_host(connect_data->gpi),
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
934 purple_proxy_info_get_port(connect_data->gpi));
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
935
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
936 g_proxy_connect_async(proxy, G_IO_STREAM(conn),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
937 G_PROXY_ADDRESS(proxy_addr),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
938 connect_data->cancellable,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
939 socks5_proxy_connect_cb, connect_data);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
940 g_object_unref(proxy_addr);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
941 g_object_unref(conn);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
942 g_object_unref(proxy);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
943 }
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
944
31678
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
945 /*
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
946 * Combine some of this code with purple_proxy_connect()
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
947 */
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
948 PurpleProxyConnectData *
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
949 purple_proxy_connect_socks5_account(void *handle, PurpleAccount *account,
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
950 PurpleProxyInfo *gpi,
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
951 const char *host, int port,
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
952 PurpleProxyConnectFunction connect_cb,
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
953 gpointer data)
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
954 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
955 PurpleProxyConnectData *connect_data;
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
956 GSocketClient *client;
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
957 GError *error = NULL;
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
958
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
959 g_return_val_if_fail(host != NULL, NULL);
15015
7af69d172538 [gaim-migrate @ 17732]
Nathan Walp <nwalp@pidgin.im>
parents: 14965
diff changeset
960 g_return_val_if_fail(port >= 0, NULL);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
961 g_return_val_if_fail(connect_cb != NULL, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
962
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
963 connect_data = g_new0(PurpleProxyConnectData, 1);
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
964 connect_data->fd = -1;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
965 connect_data->handle = handle;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
966 connect_data->connect_cb = connect_cb;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
967 connect_data->data = data;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
968 connect_data->host = g_strdup(host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
969 connect_data->port = port;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
970 connect_data->gpi = gpi;
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
971
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
972 client = purple_gio_socket_client_new(account, &error);
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
973
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
974 if (client == NULL) {
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
975 /* Assume it's a proxy error */
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
976 purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
977 error->message,
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
978 purple_request_cpar_from_account(account));
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
979 g_clear_error(&error);
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
980
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
981 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
982 return NULL;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
983 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
984
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
985 connect_data->cancellable = g_cancellable_new();
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
986
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
987 purple_debug_info("proxy",
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
988 "Connecting to %s:%d via %s:%d using SOCKS5\n",
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
989 connect_data->host, connect_data->port,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
990 purple_proxy_info_get_host(connect_data->gpi),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
991 purple_proxy_info_get_port(connect_data->gpi));
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
992
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
993 g_socket_client_connect_to_host_async(client,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
994 purple_proxy_info_get_host(connect_data->gpi),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
995 purple_proxy_info_get_port(connect_data->gpi),
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
996 connect_data->cancellable, socks5_connect_to_host_cb,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
997 connect_data);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
998 g_object_unref(client);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
999
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1000 handles = g_slist_prepend(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1001
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
1002 return connect_data;
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
1003 }
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
1004
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
1005 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1006 purple_proxy_connect_cancel(PurpleProxyConnectData *connect_data)
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
1007 {
32129
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
1008 g_return_if_fail(connect_data != NULL);
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
1009
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1010 purple_proxy_connect_data_disconnect(connect_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1011 purple_proxy_connect_data_destroy(connect_data);
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
1012 }
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
1013
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1014 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1015 purple_proxy_connect_cancel_with_handle(void *handle)
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1016 {
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1017 GSList *l, *l_next;
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1018
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1019 for (l = handles; l != NULL; l = l_next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1020 PurpleProxyConnectData *connect_data = l->data;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1021
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1022 l_next = l->next;
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1023
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1024 if (connect_data->handle == handle)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1025 purple_proxy_connect_cancel(connect_data);
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1026 }
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1027 }
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1028
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1029 GProxyResolver *
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1030 purple_proxy_get_proxy_resolver(PurpleAccount *account, GError **error)
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1031 {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1032 PurpleProxyInfo *info = purple_proxy_get_setup(account);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1033 const gchar *protocol;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1034 const gchar *username;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1035 const gchar *password;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1036 gchar *auth;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1037 gchar *proxy;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1038 GProxyResolver *resolver;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1039
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1040 if (purple_proxy_info_get_proxy_type(info) == PURPLE_PROXY_NONE) {
37942
33f8691a69df proxy: don't use default resolver if direct connection is wanted
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37939
diff changeset
1041 /* Return an empty simple resolver, which will resolve on direct
33f8691a69df proxy: don't use default resolver if direct connection is wanted
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37939
diff changeset
1042 * connection. */
33f8691a69df proxy: don't use default resolver if direct connection is wanted
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37939
diff changeset
1043 return g_simple_proxy_resolver_new(NULL, NULL);
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1044 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1045
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1046 switch (purple_proxy_info_get_proxy_type(info))
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1047 {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1048 /* PURPLE_PROXY_NONE already handled above */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1049
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1050 case PURPLE_PROXY_USE_ENVVAR:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1051 /* Intentional passthrough */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1052 case PURPLE_PROXY_HTTP:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1053 protocol = "http";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1054 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1055 case PURPLE_PROXY_SOCKS4:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1056 protocol = "socks4";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1057 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1058 case PURPLE_PROXY_SOCKS5:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1059 /* Intentional passthrough */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1060 case PURPLE_PROXY_TOR:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1061 protocol = "socks5";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1062 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1063
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1064 default:
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1065 g_set_error(error, PURPLE_CONNECTION_ERROR,
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1066 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1067 _("Invalid Proxy type (%d) specified"),
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1068 purple_proxy_info_get_proxy_type(info));
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1069 return NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1070 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1071
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1072
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1073 if (purple_proxy_info_get_host(info) == NULL ||
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1074 purple_proxy_info_get_port(info) <= 0) {
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1075 g_set_error_literal(error, PURPLE_CONNECTION_ERROR,
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1076 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1077 _("Either the host name or port number "
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1078 "specified for your given proxy type is "
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1079 "invalid."));
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1080 return NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1081 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1082
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1083 /* Everything checks out. Create and return the GProxyResolver */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1084
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1085 username = purple_proxy_info_get_username(info);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1086 password = purple_proxy_info_get_password(info);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1087
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1088 /* Username and password are optional */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1089 if (username != NULL && password != NULL) {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1090 auth = g_strdup_printf("%s:%s@", username, password);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1091 } else if (username != NULL) {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1092 auth = g_strdup_printf("%s@", username);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1093 } else {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1094 auth = NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1095 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1096
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1097 proxy = g_strdup_printf("%s://%s%s:%i", protocol,
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1098 auth != NULL ? auth : "",
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1099 purple_proxy_info_get_host(info),
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1100 purple_proxy_info_get_port(info));
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1101 g_free(auth);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1102
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1103 resolver = g_simple_proxy_resolver_new(proxy, NULL);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1104 g_free(proxy);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1105
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1106 return resolver;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1107 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1108
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1109 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1110 proxy_pref_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12811
diff changeset
1111 gconstpointer value, gpointer data)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1112 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1113 PurpleProxyInfo *info = purple_global_proxy_get_info();
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1114
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1115 if (purple_strequal(name, "/purple/proxy/type")) {
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1116 int proxytype;
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12811
diff changeset
1117 const char *type = value;
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1118
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1119 if (purple_strequal(type, "none"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1120 proxytype = PURPLE_PROXY_NONE;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1121 else if (purple_strequal(type, "http"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1122 proxytype = PURPLE_PROXY_HTTP;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1123 else if (purple_strequal(type, "socks4"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1124 proxytype = PURPLE_PROXY_SOCKS4;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1125 else if (purple_strequal(type, "socks5"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1126 proxytype = PURPLE_PROXY_SOCKS5;
31677
042eaab1468c Add a new proxy type of "Tor". This is really just a SOCKS5 proxy, but can be
Daniel Atallah <datallah@pidgin.im>
parents: 30626
diff changeset
1127 else if (purple_strequal(type, "tor"))
042eaab1468c Add a new proxy type of "Tor". This is really just a SOCKS5 proxy, but can be
Daniel Atallah <datallah@pidgin.im>
parents: 30626
diff changeset
1128 proxytype = PURPLE_PROXY_TOR;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1129 else if (purple_strequal(type, "envvar"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1130 proxytype = PURPLE_PROXY_USE_ENVVAR;
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1131 else
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1132 proxytype = -1;
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1133
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
1134 purple_proxy_info_set_proxy_type(info, proxytype);
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1135 } else if (purple_strequal(name, "/purple/proxy/host"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1136 purple_proxy_info_set_host(info, value);
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1137 else if (purple_strequal(name, "/purple/proxy/port"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1138 purple_proxy_info_set_port(info, GPOINTER_TO_INT(value));
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1139 else if (purple_strequal(name, "/purple/proxy/username"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1140 purple_proxy_info_set_username(info, value);
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 24866
diff changeset
1141 else if (purple_strequal(name, "/purple/proxy/password"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1142 purple_proxy_info_set_password(info, value);
1087
bc9c6b635358 [gaim-migrate @ 1097]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
1143 }
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1144
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1145 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1146 purple_proxy_get_handle()
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1147 {
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1148 static int handle;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1149
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1150 return &handle;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1151 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1152
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1153 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1154 purple_proxy_init(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1155 {
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1156 void *handle;
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1157
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1158 /* Initialize a default proxy info struct. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1159 global_proxy_info = purple_proxy_info_new();
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1160
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1161 /* Proxy */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1162 purple_prefs_add_none("/purple/proxy");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1163 purple_prefs_add_string("/purple/proxy/type", "none");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1164 purple_prefs_add_string("/purple/proxy/host", "");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1165 purple_prefs_add_int("/purple/proxy/port", 0);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1166 purple_prefs_add_string("/purple/proxy/username", "");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1167 purple_prefs_add_string("/purple/proxy/password", "");
25624
62b56bc39896 Implement support for resolving DNS via the SOCKS4 proxy in use.
Daniel Atallah <datallah@pidgin.im>
parents: 25623
diff changeset
1168 purple_prefs_add_bool("/purple/proxy/socks4_remotedns", FALSE);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1169
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1170 /* Setup callbacks for the preferences. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1171 handle = purple_proxy_get_handle();
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1172 purple_prefs_connect_callback(handle, "/purple/proxy/type", proxy_pref_cb,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1173 NULL);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1174 purple_prefs_connect_callback(handle, "/purple/proxy/host", proxy_pref_cb,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1175 NULL);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1176 purple_prefs_connect_callback(handle, "/purple/proxy/port", proxy_pref_cb,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1177 NULL);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1178 purple_prefs_connect_callback(handle, "/purple/proxy/username",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1179 proxy_pref_cb, NULL);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1180 purple_prefs_connect_callback(handle, "/purple/proxy/password",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1181 proxy_pref_cb, NULL);
20053
68ce40196f8a grab revision 6be36979d022284283217c2a32f2b812740cbbf3
Luke Schierer <lschiere@pidgin.im>
parents: 19985
diff changeset
1182
68ce40196f8a grab revision 6be36979d022284283217c2a32f2b812740cbbf3
Luke Schierer <lschiere@pidgin.im>
parents: 19985
diff changeset
1183 /* Load the initial proxy settings */
20055
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1184 purple_prefs_trigger_callback("/purple/proxy/type");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1185 purple_prefs_trigger_callback("/purple/proxy/host");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1186 purple_prefs_trigger_callback("/purple/proxy/port");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1187 purple_prefs_trigger_callback("/purple/proxy/username");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1188 purple_prefs_trigger_callback("/purple/proxy/password");
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1189 }
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1190
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1191 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1192 purple_proxy_uninit(void)
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1193 {
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1194 while (handles != NULL)
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
1195 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1196 purple_proxy_connect_data_disconnect(handles->data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1197 purple_proxy_connect_data_destroy(handles->data);
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
1198 }
28177
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1199
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1200 purple_prefs_disconnect_by_handle(purple_proxy_get_handle());
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1201
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1202 purple_proxy_info_destroy(global_proxy_info);
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1203 global_proxy_info = NULL;
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1204 }

mercurial