libpurple/proxy.c

Tue, 23 Aug 2016 04:40:20 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Tue, 23 Aug 2016 04:40:20 -0400
changeset 37939
8df8870e946c
parent 37549
1e58ac9ee097
child 37942
33f8691a69df
permissions
-rw-r--r--

Remove unused variables and functions.

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"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
37 #include "util.h"
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3376
diff changeset
38
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
39 #include <gio/gio.h>
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
40
32299
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
41 struct _PurpleProxyInfo
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
42 {
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
43 PurpleProxyType type; /* The proxy type. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
44
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
45 char *host; /* The host. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
46 int port; /* The port number. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
47 char *username; /* The username. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
48 char *password; /* The password. */
32299
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
49 };
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
50
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
51 struct _PurpleProxyConnectData {
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
52 void *handle;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
53 PurpleProxyConnectFunction connect_cb;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
54 gpointer data;
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
55 gchar *host;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
56 int port;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
57 int fd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
58 PurpleProxyInfo *gpi;
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
59
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
60 GCancellable *cancellable;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
61 };
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
62
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
63 static PurpleProxyInfo *global_proxy_info = NULL;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
64
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
65 static GSList *handles = NULL;
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
66
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
67 /*
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 * 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
69 * 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
70 */
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 #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
72
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
73 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
74 * Proxy structure API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
75 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
76 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
77 purple_proxy_info_new(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
78 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
79 return g_new0(PurpleProxyInfo, 1);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
80 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
83 purple_proxy_info_destroy(PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
84 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
85 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
86
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
87 g_free(info->host);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
88 g_free(info->username);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
89 g_free(info->password);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
90
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
91 g_free(info);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
92 }
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 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
95 purple_proxy_info_set_proxy_type(PurpleProxyInfo *info, PurpleProxyType type)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
96 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
97 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
98
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
99 info->type = type;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
100 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
103 purple_proxy_info_set_host(PurpleProxyInfo *info, const char *host)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
104 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
105 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
106
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
107 g_free(info->host);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
108 info->host = g_strdup(host);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
109 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
112 purple_proxy_info_set_port(PurpleProxyInfo *info, int port)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
113 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
114 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
115
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
116 info->port = port;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
117 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
120 purple_proxy_info_set_username(PurpleProxyInfo *info, const char *username)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
121 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
122 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
123
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
124 g_free(info->username);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
125 info->username = g_strdup(username);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
126 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
129 purple_proxy_info_set_password(PurpleProxyInfo *info, const char *password)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
130 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
131 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
132
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
133 g_free(info->password);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
134 info->password = g_strdup(password);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
135 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
136
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
137 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
138 purple_proxy_info_get_proxy_type(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
139 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
140 g_return_val_if_fail(info != NULL, PURPLE_PROXY_NONE);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
141
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
142 return info->type;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
143 }
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 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
146 purple_proxy_info_get_host(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
147 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
148 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
149
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
150 return info->host;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
151 }
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 int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
154 purple_proxy_info_get_port(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
155 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
156 g_return_val_if_fail(info != NULL, 0);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
157
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
158 return info->port;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
159 }
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 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
162 purple_proxy_info_get_username(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
163 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
164 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
165
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
166 return info->username;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
167 }
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 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
170 purple_proxy_info_get_password(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
171 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
172 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
173
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
174 return info->password;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
175 }
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 * Global Proxy API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
179 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
180 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
181 purple_global_proxy_get_info(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
182 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
183 return global_proxy_info;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
184 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
185
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
186 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
187 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
188 {
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 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
190
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 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
192
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 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
194 }
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
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
196
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
197 /* 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
198 #define GNOME_PROXY_MODE 0
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
199 #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
200 #define GNOME_PROXY_SOCKS_HOST 2
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
201 #define GNOME_PROXY_SOCKS_PORT 3
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
202 #define GNOME_PROXY_HTTP_HOST 4
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
203 #define GNOME_PROXY_HTTP_PORT 5
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
204 #define GNOME_PROXY_HTTP_USER 6
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
205 #define GNOME_PROXY_HTTP_PASS 7
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
206 #define GNOME2_CMDS 0
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
207 #define GNOME3_CMDS 1
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
208
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
209 /* detect proxy settings for gnome2/gnome3 */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
210 static const char* gproxycmds[][2] = {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
211 { "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
212 { "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
213 { "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
214 { "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
215 { "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
216 { "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
217 { "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
218 { "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
219 };
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
220
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
221 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
222 * purple_gnome_proxy_get_parameter:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
223 * @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
224 * @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
225 *
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
226 * 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
227 * GNOME 2/3 environment.
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
228 *
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
229 * 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
230 */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
231 static char *
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
232 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
233 {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
234 gchar *param, *err;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
235 size_t param_len;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
236
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
237 if (parameter > GNOME_PROXY_HTTP_PASS)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
238 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
239 if (gnome_version > GNOME3_CMDS)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
240 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
241
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
242 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
243 &param, &err, NULL, NULL))
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
244 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
245 g_free(err);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
246
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
247 g_strstrip(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
248 if (param[0] == '\'' || param[0] == '\"') {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
249 param_len = strlen(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
250 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
251 --param_len;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
252 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
253 param[param_len - 1] = '\0';
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
254 g_strstrip(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
255 }
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 return param;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
258 }
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
259
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
260 static PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
261 purple_gnome_proxy_get_info(void)
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
262 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
263 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
264 gboolean use_same_proxy = FALSE;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
265 gchar *tmp;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
266 guint8 gnome_version = GNOME3_CMDS;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
267
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
268 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
269 if (tmp == NULL) {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
270 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
271 gnome_version = GNOME2_CMDS;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
272 }
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
273 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
274 return purple_global_proxy_get_info();
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
275
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
276 g_free(tmp);
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
277
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
278 /* 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
279 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
280 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
281 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
282
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
283 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
284 info.type = PURPLE_PROXY_NONE;
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
285 g_free(tmp);
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
286 return &info;
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
287 }
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
288
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
289 if (!purple_strequal(tmp, "manual")) {
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
290 /* 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
291 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
292 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
293 }
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
294
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
295 g_free(tmp);
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
296
22560
510c8edb3854 Bring back the lines that free info.whatever on subsequent calls to
Mark Doliner <markdoliner@pidgin.im>
parents: 22559
diff changeset
297 /* Free the old fields */
37426
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
298 g_free(info.host);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
299 info.host = NULL;
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
300 g_free(info.username);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
301 info.username = NULL;
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
302 g_free(info.password);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
303 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
304
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
305 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
306 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
307 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
308
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
309 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
310 use_same_proxy = TRUE;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
311
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
312 g_free(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
313
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
314 if (!use_same_proxy) {
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
315 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
316 if (!info.host)
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
317 return purple_global_proxy_get_info();
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
318 }
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
319
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
320 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
321 info.type = PURPLE_PROXY_SOCKS5;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
322 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
323 if (!tmp) {
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
324 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
325 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
326 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
327 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
328 info.port = atoi(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
329 g_free(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
330 } else {
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
331 g_free(info.host);
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
332 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
333 if (!info.host)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
334 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
335
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
336 /* 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
337 info.type = PURPLE_PROXY_HTTP;
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
338
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
339 if (*info.host == '\0')
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
340 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
341 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
342 "'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
343 "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
344 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
345 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
346 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
347 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
348
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
349 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
350 if (!info.username)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
351 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
352 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
353 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
354 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
355 }
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
356
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
357 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
358 if (!info.password)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
359 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
360 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
361 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
362 g_free(info.username);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
363 info.username = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
364 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
365 }
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
366
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
367 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
368 if (!tmp)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
369 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
370 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
371 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
372 g_free(info.username);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
373 info.username = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
374 g_free(info.password);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
375 info.password = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
376 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
377 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
378 info.port = atoi(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
379 g_free(tmp);
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
380 }
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
381
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
382 return &info;
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
383 }
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
384
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
385 #ifdef _WIN32
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
386
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
387 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
388
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
389 /* 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
390 static void
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
391 _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
392 {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
393 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
394 char *d;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
395
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
396 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
397 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
398 *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
399
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 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
401 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
402 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
403
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 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
405 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
406 }
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
407
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
408 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
409 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
410 }
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 static PurpleProxyInfo *
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
413 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
414 {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
415 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
416 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
417 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
418
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
419 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
420
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
421 if (!loaded) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
422 loaded = TRUE;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
423 MyWinHttpGetIEProxyConfig = (LPFNWINHTTPGETIEPROXYCONFIG)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
424 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
425 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
426 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
427 }
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 if (!MyWinHttpGetIEProxyConfig)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
430 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
431
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
432 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
433 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
434 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
435 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
436 }
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 /* 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
439 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
440 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
441
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
442 /* 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
443
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
444 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
445
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
446 } 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
447 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
448 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
449
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
450 /* 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
451 /* 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
452
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
453 /* 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
454 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
455 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
456
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
457 /* 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
458 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
459
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
460 if (specific) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
461 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
462 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
463 if (tmp)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
464 *tmp = '\0';
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
465 /* 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
466 } else
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
467 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
468
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
469 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
470 _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
471 /* 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
472 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
473 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
474
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
475 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
476 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
477 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
478
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
479 } 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
480
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
481 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
482 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
483 if (tmp)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
484 *tmp = '\0';
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
485 /* 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
486
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
487 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
488 _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
489 /* 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
490 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
491 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
492
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
493 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
494 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
495 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
496
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
497 } else {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
498
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
499 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
500
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
501 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
502
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 /* 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
507
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
508 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
509 } else {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
510 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
511 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
512 }
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 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
515 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
516 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
517 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
518 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
519 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
520
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
521 return &info;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
522 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
523 #endif
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
524
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
525
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
526 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
527 * Proxy API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
528 **************************************************************************/
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3867
diff changeset
529
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
530 /*
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
531 * Whoever calls this needs to have called
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
532 * purple_proxy_connect_data_disconnect() beforehand.
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
533 */
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
534 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
535 purple_proxy_connect_data_destroy(PurpleProxyConnectData *connect_data)
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
536 {
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
537 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
538 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
539
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
540 handles = g_slist_remove(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
541
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
542 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
543 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
544
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
545 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
546
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
547 connect_data->cancellable = NULL;
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
548 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
549
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
550 g_free(connect_data->host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
551 g_free(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
552 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
553
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
554 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
555 * purple_proxy_connect_data_disconnect:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
556 * @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
557 * 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
558 * 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
559 * 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
560 *
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
561 * Free all information dealing with a connection attempt and
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
562 * 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
563 * to another IP address.
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
564 *
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
565 * 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
566 * 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
567 * error message, then destroy the connect_data.
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
568 */
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
569 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
570 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
571 {
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
572 if (connect_data->fd >= 0)
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
573 {
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
574 close(connect_data->fd);
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
575 connect_data->fd = -1;
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
576 }
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 if (error_message != NULL)
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
579 {
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
580 purple_debug_error("proxy", "Connection attempt failed: %s\n",
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
581 error_message);
37536
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
582
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
583 /* 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
584 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
585 purple_proxy_connect_data_destroy(connect_data);
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
586 }
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
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
589 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
590 purple_proxy_connect_data_connected(PurpleProxyConnectData *connect_data)
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
591 {
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
592 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
593 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
594
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
595 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
596
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 * 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
599 * 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
600 * we destroy the connect_data.
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
601 */
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
602 connect_data->fd = -1;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
603
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
604 purple_proxy_connect_data_disconnect(connect_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
605 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
606 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
607
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
608 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
609 purple_proxy_get_setup(PurpleAccount *account)
1087
bc9c6b635358 [gaim-migrate @ 1097]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
610 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
611 PurpleProxyInfo *gpi = NULL;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
612 const gchar *tmp;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
613
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
614 /* 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
615 static PurpleProxyInfo *tmp_none_proxy_info = NULL;
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
616 if (!tmp_none_proxy_info) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
617 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
618 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
619 }
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
620
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
621 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
622 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
623 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
624 gpi = NULL;
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
625 }
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
626 if (gpi == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
627 if (purple_running_gnome())
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
628 gpi = purple_gnome_proxy_get_info();
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
629 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
630 gpi = purple_global_proxy_get_info();
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
631 }
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
632
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
633 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
634 if ((tmp = g_getenv("HTTP_PROXY")) != NULL ||
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
635 (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
636 (tmp = g_getenv("HTTPPROXY")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
637 {
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
638 PurpleHttpURL *url;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
639
9129
9510867e614f [gaim-migrate @ 9907]
Nathan Walp <nwalp@pidgin.im>
parents: 9100
diff changeset
640 /* http_proxy-format:
9227
95c28297b72c [gaim-migrate @ 10023]
Don Seiler <rizzo@gentoo.org>
parents: 9148
diff changeset
641 * 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
642 */
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
643 url = purple_http_url_parse(tmp);
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
644 if (!url) {
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
645 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
646 return gpi;
7652
d60ba2565661 [gaim-migrate @ 8296]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7475
diff changeset
647 }
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
648
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
649 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
650 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
651 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
652 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
653
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
654 /* 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
655 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
656 (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("HTTPPROXYUSER")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
658 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
659
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
660 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
661 (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("HTTPPROXYPASS")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
663 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
664
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
665 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
666 (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("HTTPPROXYPORT")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
668 purple_proxy_info_set_port(gpi, atoi(tmp));
10534
c28eef1b882a [gaim-migrate @ 11866]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10320
diff changeset
669 } else {
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
670 #ifdef _WIN32
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
671 PurpleProxyInfo *wgpi;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
672 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
673 return wgpi;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
674 #endif
10534
c28eef1b882a [gaim-migrate @ 11866]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10320
diff changeset
675 /* 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
676 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
677 gpi = tmp_none_proxy_info;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
678 }
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
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
682 return gpi;
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
683 }
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
684
37533
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
685 /* 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
686 * 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
687 */
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
688 static int
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
689 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
690 {
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
691 #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
692 HANDLE newfd;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
693
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
694 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
695 (HANDLE)fd,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
696 GetCurrentProcess (),
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
697 &newfd,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
698 0,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
699 FALSE,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
700 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
701 {
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
702 return -1;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
703 }
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 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
706 #else
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
707 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
708 #endif
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
709 }
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
710 /* 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
711
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
712 static void
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
713 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
714 {
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
715 PurpleProxyConnectData *connect_data = user_data;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
716 GSocketConnection *conn;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
717 GError *error = NULL;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
718 GSocket *socket;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
719
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
720 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
721 res, &error);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
722 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
723 /* 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
724 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
725 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
726 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
727 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
728 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
729 "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
730 error->message);
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
731 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
732 "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
733 "host.\n");
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
734 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
735
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
736 g_clear_error(&error);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
737 return;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
738 }
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 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
741 g_assert(socket != NULL);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
742
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
743 /* 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
744 * 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
745 * 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
746 * 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
747 * 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
748 * file descriptor is duplicated.
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
749 */
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
750 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
751 g_object_unref(conn);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
752
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
753 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
754 }
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
755
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
756 PurpleProxyConnectData *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
757 purple_proxy_connect(void *handle, PurpleAccount *account,
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
758 const char *host, int port,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
759 PurpleProxyConnectFunction connect_cb, gpointer data)
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
760 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
761 PurpleProxyConnectData *connect_data;
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
762 GProxyResolver *resolver;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
763 GSocketClient *client;
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
764
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
765 g_return_val_if_fail(host != NULL, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
766 g_return_val_if_fail(port > 0, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
767 g_return_val_if_fail(connect_cb != NULL, NULL);
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
768
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
769 connect_data = g_new0(PurpleProxyConnectData, 1);
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
770 connect_data->fd = -1;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
771 connect_data->handle = handle;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
772 connect_data->connect_cb = connect_cb;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
773 connect_data->data = data;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
774 connect_data->host = g_strdup(host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
775 connect_data->port = port;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
776 connect_data->gpi = purple_proxy_get_setup(account);
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
777
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
778 resolver = purple_proxy_get_proxy_resolver(account);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
779
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
780 if (resolver == NULL) {
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
781 /* purple_proxy_get_proxy_resolver already has debug output */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
782 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
783 return NULL;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
784 }
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3867
diff changeset
785
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
786 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
787
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
788 client = g_socket_client_new();
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
789 g_socket_client_set_proxy_resolver(client, resolver);
37518
53c9ebedf2b7 Plug g_resolver_get_default() leaks
Mike Ruprecht <cmaiku@gmail.com>
parents: 37517
diff changeset
790 g_object_unref(resolver);
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
791
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
792 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
793 host, port);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
794
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
795 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
796 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
797 connect_data);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
798 g_object_unref(client);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
799
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
800 handles = g_slist_prepend(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
801
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
802 return connect_data;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
803 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
804
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
805 static void
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
806 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
807 {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
808 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
809 GIOStream *stream;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
810 GError *error = NULL;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
811 GSocket *socket;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
812
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
813 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
814
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
815 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
816 /* 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
817 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
818 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
819 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
820 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
821 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
822 "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
823 error->message);
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
824 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
825 "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
826 "host.\n");
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
827 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
828
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
829 g_clear_error(&error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
830 return;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
831 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
832
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
833 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
834 purple_debug_error("proxy",
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
835 "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
836 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
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 g_object_unref(stream);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
839 return;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
840 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
841
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
842 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
843
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
844 /* 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
845 * 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
846 * 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
847 * 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
848 * 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
849 * 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
850 */
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
851 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
852 g_object_unref(stream);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
853
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
854 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
855 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
856
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
857 /* 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
858 * relevant account proxy)
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
859 */
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
860 static void
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
861 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
862 gpointer user_data)
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
863 {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
864 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
865 GSocketConnection *conn;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
866 GError *error = NULL;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
867 GProxy *proxy;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
868 PurpleProxyInfo *info;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
869 GSocketAddress *addr;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
870 GInetSocketAddress *inet_addr;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
871 GSocketAddress *proxy_addr;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
872
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
873 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
874 res, &error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
875 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
876 /* 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
877 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
878 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
879 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
880 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
881 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
882 "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
883 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
884 "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
885 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
886
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
887 g_clear_error(&error);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
888 return;
32129
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
889 }
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
890
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
891 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
892 if (proxy == NULL) {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
893 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
894 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
895 "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 g_object_unref(conn);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
897 return;
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
898 }
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
899
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
900 info = connect_data->gpi;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
901
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
902 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
903 if (addr == NULL) {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
904 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
905 "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
906 error->message);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
907 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
908 "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
909 "connection");
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
910 g_object_unref(conn);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
911 g_object_unref(proxy);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
912 g_clear_error(&error);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
913 return;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
914 }
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
915
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
916 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
917
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
918 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
919 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
920 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
921 "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
922 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
923 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
924 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
925
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
926 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
927
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
928 purple_debug_info("proxy",
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
929 "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
930 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
931 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
932 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
933
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
934 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
935 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
936 connect_data->cancellable,
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
937 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
938 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
939 g_object_unref(conn);
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);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
941 }
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
942
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
943 /*
ad8a9a266b05 Add new DNS-related API to perform lookups in the context of an account.
Daniel Atallah <datallah@pidgin.im>
parents: 31677
diff changeset
944 * 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
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 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
947 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
948 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
949 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
950 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
951 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
952 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
953 PurpleProxyConnectData *connect_data;
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
954 GProxyResolver *resolver;
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
955 GSocketClient *client;
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
956
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
957 g_return_val_if_fail(host != NULL, NULL);
15015
7af69d172538 [gaim-migrate @ 17732]
Nathan Walp <nwalp@pidgin.im>
parents: 14965
diff changeset
958 g_return_val_if_fail(port >= 0, NULL);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
959 g_return_val_if_fail(connect_cb != NULL, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
960
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
961 connect_data = g_new0(PurpleProxyConnectData, 1);
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
962 connect_data->fd = -1;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
963 connect_data->handle = handle;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
964 connect_data->connect_cb = connect_cb;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
965 connect_data->data = data;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
966 connect_data->host = g_strdup(host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
967 connect_data->port = port;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
968 connect_data->gpi = gpi;
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
969
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
970 /* If there is an account proxy, use it to connect to the desired SOCKS5
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
971 * proxy.
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
972 */
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
973 resolver = purple_proxy_get_proxy_resolver(account);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
974
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
975 if (resolver == NULL) {
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
976 /* purple_proxy_get_proxy_resolver already has debug output */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
977 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
978 return NULL;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
979 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
980
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
981 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
982
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
983 client = g_socket_client_new();
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
984 g_socket_client_set_proxy_resolver(client, resolver);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
985 g_object_unref(resolver);
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 *
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1030 purple_proxy_get_proxy_resolver(PurpleAccount *account)
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) {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1041 /* Return the default proxy which, if it doesn't support any
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1042 * further system proxy settings than purple_proxy_get_setup()
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1043 * detects, will end up as direct connections as intended.
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 return g_object_ref(g_proxy_resolver_get_default());
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1046 }
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 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
1049 {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1050 /* 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
1051
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_USE_ENVVAR:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1053 /* Intentional passthrough */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1054 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
1055 protocol = "http";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1056 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1057 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
1058 protocol = "socks4";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1059 break;
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_SOCKS5:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1061 /* Intentional passthrough */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1062 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
1063 protocol = "socks5";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1064 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1065
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1066 default:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1067 purple_debug_error("proxy",
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1068 "Invalid Proxy type (%d) specified.\n",
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1069 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
1070 return NULL;
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
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1074 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
1075 purple_proxy_info_get_port(info) <= 0) {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1076 purple_notify_error(NULL, NULL,
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1077 _("Invalid proxy settings"),
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1078 _("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
1079 "specified for your given proxy type is "
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1080 "invalid."),
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1081 purple_request_cpar_from_account( account));
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1082 return NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1083 }
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 /* 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
1086
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1087 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
1088 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
1089
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1090 /* 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
1091 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
1092 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
1093 } 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
1094 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
1095 } else {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1096 auth = NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1097 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1098
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1099 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
1100 auth != NULL ? auth : "",
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1101 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
1102 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
1103 g_free(auth);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1104
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1105 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
1106 g_free(proxy);
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 return resolver;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1109 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1110
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1111 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1112 proxy_pref_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12811
diff changeset
1113 gconstpointer value, gpointer data)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1114 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1115 PurpleProxyInfo *info = purple_global_proxy_get_info();
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1116
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
1117 if (purple_strequal(name, "/purple/proxy/type")) {
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1118 int proxytype;
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12811
diff changeset
1119 const char *type = value;
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1120
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 if (purple_strequal(type, "none"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1122 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
1123 else if (purple_strequal(type, "http"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1124 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
1125 else if (purple_strequal(type, "socks4"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1126 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
1127 else if (purple_strequal(type, "socks5"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1128 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
1129 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
1130 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
1131 else if (purple_strequal(type, "envvar"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1132 proxytype = PURPLE_PROXY_USE_ENVVAR;
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1133 else
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1134 proxytype = -1;
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1135
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
1136 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
1137 } 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
1138 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
1139 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
1140 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
1141 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
1142 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
1143 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
1144 purple_proxy_info_set_password(info, value);
1087
bc9c6b635358 [gaim-migrate @ 1097]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
1145 }
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1146
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1147 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1148 purple_proxy_get_handle()
14151
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 static int 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 return &handle;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1153 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1154
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1155 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1156 purple_proxy_init(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1157 {
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1158 void *handle;
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1159
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1160 /* Initialize a default proxy info struct. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1161 global_proxy_info = purple_proxy_info_new();
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1162
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1163 /* 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
1164 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
1165 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
1166 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
1167 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
1168 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
1169 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
1170 purple_prefs_add_bool("/purple/proxy/socks4_remotedns", FALSE);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1171
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1172 /* Setup callbacks for the preferences. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1173 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
1174 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
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/host", 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/port", proxy_pref_cb,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1179 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/username",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1181 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
1182 purple_prefs_connect_callback(handle, "/purple/proxy/password",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1183 proxy_pref_cb, NULL);
20053
68ce40196f8a grab revision 6be36979d022284283217c2a32f2b812740cbbf3
Luke Schierer <lschiere@pidgin.im>
parents: 19985
diff changeset
1184
68ce40196f8a grab revision 6be36979d022284283217c2a32f2b812740cbbf3
Luke Schierer <lschiere@pidgin.im>
parents: 19985
diff changeset
1185 /* Load the initial proxy settings */
20055
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1186 purple_prefs_trigger_callback("/purple/proxy/type");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1187 purple_prefs_trigger_callback("/purple/proxy/host");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1188 purple_prefs_trigger_callback("/purple/proxy/port");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1189 purple_prefs_trigger_callback("/purple/proxy/username");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1190 purple_prefs_trigger_callback("/purple/proxy/password");
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1191 }
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1192
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1193 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1194 purple_proxy_uninit(void)
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1195 {
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1196 while (handles != NULL)
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
1197 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1198 purple_proxy_connect_data_disconnect(handles->data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1199 purple_proxy_connect_data_destroy(handles->data);
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
1200 }
28177
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_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
1203
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1204 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
1205 global_proxy_info = NULL;
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1206 }

mercurial