libpurple/proxy.c

Wed, 20 Jun 2018 02:13:44 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 20 Jun 2018 02:13:44 -0400
changeset 39181
f0cd633d86d4
parent 38356
28720be5c477
child 39386
3fd7e834749f
permissions
-rw-r--r--

prefs: Add binding versions of pref widget functions.

These just bind settings to existing widgets and copy the saved value to
the widget, except for combos which are produced from runtime lists.
Those are populated in a similar way as before.

There are some extra _bind_ words that will probably be dropped once the
other functions are unused.

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"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
30 #include "debug.h"
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
31 #include "http.h"
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
32 #include "notify.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
33 #include "prefs.h"
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
34 #include "proxy.h"
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
35 #include "purple-gio.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
36 #include "util.h"
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3376
diff changeset
37
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
38 #include <gio/gio.h>
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
39
32299
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
40 struct _PurpleProxyInfo
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
41 {
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
42 PurpleProxyType type; /* The proxy type. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
43
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
44 char *host; /* The host. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
45 int port; /* The port number. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
46 char *username; /* The username. */
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
47 char *password; /* The password. */
32299
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
48 };
106311e19d3a Hide PurpleProxyInfo struct.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32297
diff changeset
49
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
50 struct _PurpleProxyConnectData {
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
51 void *handle;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
52 PurpleProxyConnectFunction connect_cb;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
53 gpointer data;
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
54 gchar *host;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
55 int port;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
56 int fd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
57 PurpleProxyInfo *gpi;
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
58
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
59 GCancellable *cancellable;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
60 };
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
61
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
62 static PurpleProxyInfo *global_proxy_info = NULL;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
63
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
64 static GSList *handles = NULL;
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
65
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
66 /*
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 * 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
68 * 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
69 */
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 #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
71
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
72 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
73 * Proxy structure API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
74 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
75 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
76 purple_proxy_info_new(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
77 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
78 return g_new0(PurpleProxyInfo, 1);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
79 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
82 purple_proxy_info_destroy(PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
83 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
84 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
85
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
86 g_free(info->host);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
87 g_free(info->username);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
88 g_free(info->password);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
89
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
90 g_free(info);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
91 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
92
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
93 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
94 purple_proxy_info_set_proxy_type(PurpleProxyInfo *info, PurpleProxyType type)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
95 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
96 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
97
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
98 info->type = type;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
99 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
100
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
101 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
102 purple_proxy_info_set_host(PurpleProxyInfo *info, const char *host)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
103 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
104 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
105
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
106 g_free(info->host);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
107 info->host = g_strdup(host);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
108 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
111 purple_proxy_info_set_port(PurpleProxyInfo *info, int port)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
112 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
113 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
114
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
115 info->port = port;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
116 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
117
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
118 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
119 purple_proxy_info_set_username(PurpleProxyInfo *info, const char *username)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
120 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
121 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
122
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
123 g_free(info->username);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
124 info->username = g_strdup(username);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
125 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
128 purple_proxy_info_set_password(PurpleProxyInfo *info, const char *password)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
129 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
130 g_return_if_fail(info != NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
131
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13991
diff changeset
132 g_free(info->password);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 14030
diff changeset
133 info->password = g_strdup(password);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
134 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
135
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
136 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
137 purple_proxy_info_get_proxy_type(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
138 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
139 g_return_val_if_fail(info != NULL, PURPLE_PROXY_NONE);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
140
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
141 return info->type;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
142 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
143
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
144 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
145 purple_proxy_info_get_host(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
146 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
147 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
148
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
149 return info->host;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
150 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
151
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
152 int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
153 purple_proxy_info_get_port(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
154 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
155 g_return_val_if_fail(info != NULL, 0);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
156
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
157 return info->port;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
158 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
159
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
160 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
161 purple_proxy_info_get_username(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
162 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
163 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
164
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
165 return info->username;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
166 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
167
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
168 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
169 purple_proxy_info_get_password(const PurpleProxyInfo *info)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
170 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
171 g_return_val_if_fail(info != NULL, NULL);
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
172
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
173 return info->password;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
174 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
175
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 * Global Proxy API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
178 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
179 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
180 purple_global_proxy_get_info(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
181 {
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
182 return global_proxy_info;
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
183 }
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
184
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
185 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
186 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
187 {
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 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
189
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
190 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
191
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
192 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
193 }
ec60fbe5a4ab Patch from fqueze to add API for setting the global proxy settings. Fixes #7610.
Daniel Atallah <datallah@pidgin.im>
parents: 24866
diff changeset
194
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
195
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
196 /* 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
197 #define GNOME_PROXY_MODE 0
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
198 #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
199 #define GNOME_PROXY_SOCKS_HOST 2
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
200 #define GNOME_PROXY_SOCKS_PORT 3
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
201 #define GNOME_PROXY_HTTP_HOST 4
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
202 #define GNOME_PROXY_HTTP_PORT 5
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
203 #define GNOME_PROXY_HTTP_USER 6
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
204 #define GNOME_PROXY_HTTP_PASS 7
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
205 #define GNOME2_CMDS 0
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
206 #define GNOME3_CMDS 1
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
207
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
208 /* detect proxy settings for gnome2/gnome3 */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
209 static const char* gproxycmds[][2] = {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
210 { "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
211 { "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
212 { "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
213 { "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
214 { "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
215 { "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
216 { "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
217 { "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
218 };
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
219
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
220 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
221 * purple_gnome_proxy_get_parameter:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
222 * @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
223 * @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
224 *
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
225 * 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
226 * GNOME 2/3 environment.
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
227 *
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
228 * 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
229 */
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
230 static char *
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
231 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
232 {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
233 gchar *param, *err;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
234 size_t param_len;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
235
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
236 if (parameter > GNOME_PROXY_HTTP_PASS)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
237 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
238 if (gnome_version > GNOME3_CMDS)
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
239 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
240
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
241 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
242 &param, &err, NULL, NULL))
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
243 return NULL;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
244 g_free(err);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
245
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
246 g_strstrip(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
247 if (param[0] == '\'' || param[0] == '\"') {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
248 param_len = strlen(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
249 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
250 --param_len;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
251 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
252 param[param_len - 1] = '\0';
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
253 g_strstrip(param);
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
254 }
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 return param;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
257 }
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
258
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
259 static PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
260 purple_gnome_proxy_get_info(void)
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
261 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
262 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
263 gboolean use_same_proxy = FALSE;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
264 gchar *tmp;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
265 guint8 gnome_version = GNOME3_CMDS;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
266
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
267 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
268 if (tmp == NULL) {
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
269 tmp = g_find_program_in_path("gconftool-2");
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
270 gnome_version = GNOME2_CMDS;
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
271 }
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
272 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
273 return purple_global_proxy_get_info();
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
274
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
275 g_free(tmp);
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
276
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
277 /* 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
278 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
279 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
280 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
281
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
282 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
283 info.type = PURPLE_PROXY_NONE;
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
284 g_free(tmp);
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
285 return &info;
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
286 }
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
287
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
288 if (!purple_strequal(tmp, "manual")) {
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
289 /* 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
290 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
291 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
292 }
12156
58a027264d6c [gaim-migrate @ 14457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11878
diff changeset
293
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
294 g_free(tmp);
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
295
22560
510c8edb3854 Bring back the lines that free info.whatever on subsequent calls to
Mark Doliner <markdoliner@pidgin.im>
parents: 22559
diff changeset
296 /* Free the old fields */
37426
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
297 g_free(info.host);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
298 info.host = NULL;
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
299 g_free(info.username);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
300 info.username = NULL;
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
301 g_free(info.password);
6fd4989b77e4 The last of the NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 37193
diff changeset
302 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
303
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
304 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
305 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
306 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
307
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
308 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
309 use_same_proxy = TRUE;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
310
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
311 g_free(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
312
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
313 if (!use_same_proxy) {
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
314 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
315 if (!info.host)
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
316 return purple_global_proxy_get_info();
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
317 }
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
318
24315
98e4a5f1d662 Fix a double free. Fixes #7047
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 24298
diff changeset
319 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
320 info.type = PURPLE_PROXY_SOCKS5;
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
321 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
322 if (!tmp) {
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
323 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
324 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
325 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
326 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
327 info.port = atoi(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
328 g_free(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
329 } else {
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
330 g_free(info.host);
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
331 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
332 if (!info.host)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
333 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
334
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
335 /* 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
336 info.type = PURPLE_PROXY_HTTP;
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
337
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
338 if (*info.host == '\0')
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
339 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
340 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
341 "'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
342 "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
343 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
344 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
345 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
346 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
347
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
348 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
349 if (!info.username)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
350 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
351 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
352 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
353 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
354 }
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
355
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
356 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
357 if (!info.password)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
358 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
359 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
360 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
361 g_free(info.username);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
362 info.username = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
363 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
364 }
32136
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
365
98a6cc751323 Add support for reading GNOME3 proxy settings.
Mihai Serban <mihai.serban@gmail.com>
parents: 32129
diff changeset
366 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
367 if (!tmp)
24156
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
368 {
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
369 g_free(info.host);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
370 info.host = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
371 g_free(info.username);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
372 info.username = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
373 g_free(info.password);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
374 info.password = NULL;
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
375 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
376 }
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
377 info.port = atoi(tmp);
6c7631ae7571 Use SOCKS proxy if specified when running in GNOME
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23532
diff changeset
378 g_free(tmp);
22555
04cfb0cf0974 Improve our error handling of Gnome proxy settings.
Mark Doliner <markdoliner@pidgin.im>
parents: 22554
diff changeset
379 }
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
380
22554
dff2ca00b045 Short circuit and return out of the function early if gconftool-2
Mark Doliner <markdoliner@pidgin.im>
parents: 22553
diff changeset
381 return &info;
11878
4c2661df91bb [gaim-migrate @ 14169]
Sean Egan <seanegan@pidgin.im>
parents: 11428
diff changeset
382 }
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
383
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
384 #ifdef _WIN32
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
385
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
386 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
387
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
388 /* 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
389 static void
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
390 _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
391 {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
392 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
393 char *d;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
394
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
395 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
396 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
397 *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
398
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 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
400 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
401 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
402
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 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
404 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
405 }
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
406
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
407 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
408 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
409 }
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 static PurpleProxyInfo *
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
412 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
413 {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
414 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
415 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
416 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
417
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
418 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
419
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
420 if (!loaded) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
421 loaded = TRUE;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
422 MyWinHttpGetIEProxyConfig = (LPFNWINHTTPGETIEPROXYCONFIG)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
423 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
424 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
425 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
426 }
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 if (!MyWinHttpGetIEProxyConfig)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
429 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
430
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
431 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
432 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
433 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
434 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
435 }
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 /* 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
438 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
439 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
440
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
441 /* 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
442
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
443 return NULL;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
444
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
445 } 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
446 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
447 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
448
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
449 /* 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
450 /* 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
451
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
452 /* 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
453 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
454 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
455
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
456 /* 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
457 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
458
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
459 if (specific) {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
460 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
461 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
462 if (tmp)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
463 *tmp = '\0';
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
464 /* 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
465 } else
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
466 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
467
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
468 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
469 _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
470 /* 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
471 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
472 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
473
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
474 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
475 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
476 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
477
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
478 } 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
479
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
480 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
481 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
482 if (tmp)
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
483 *tmp = '\0';
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
484 /* 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
485
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
486 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
487 _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
488 /* 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
489 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
490 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
491
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
492 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
493 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
494 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
495
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
496 } else {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
497
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
498 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
499
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
500 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
501
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 /* 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
506
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
507 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
508 } else {
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
509 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
510 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
511 }
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 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
514 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
515 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
516 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
517 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
518 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
519
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
520 return &info;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
521 }
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
522 #endif
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
523
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
524
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
525 /**************************************************************************
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
526 * Proxy API
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
527 **************************************************************************/
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3867
diff changeset
528
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
529 /*
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
530 * Whoever calls this needs to have called
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
531 * purple_proxy_connect_data_disconnect() beforehand.
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
532 */
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
533 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
534 purple_proxy_connect_data_destroy(PurpleProxyConnectData *connect_data)
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
535 {
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
536 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
537 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
538
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
539 handles = g_slist_remove(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
540
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
541 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
542 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
543
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
544 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
545
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
546 connect_data->cancellable = NULL;
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
547 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
548
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
549 g_free(connect_data->host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
550 g_free(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
551 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
552
35462
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
553 /*
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
554 * purple_proxy_connect_data_disconnect:
901dfa763f15 Fix some gtk-doc warnings till proxy.c
Ankit Vani <a@nevitus.org>
parents: 35454
diff changeset
555 * @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
556 * 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
557 * 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
558 * 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
559 *
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
560 * Free all information dealing with a connection attempt and
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
561 * 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
562 * to another IP address.
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
563 *
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
564 * 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
565 * 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
566 * error message, then destroy the connect_data.
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
567 */
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
568 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
569 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
570 {
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
571 if (connect_data->fd >= 0)
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
572 {
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
573 close(connect_data->fd);
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
574 connect_data->fd = -1;
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
575 }
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 if (error_message != NULL)
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
578 {
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
579 purple_debug_error("proxy", "Connection attempt failed: %s\n",
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
580 error_message);
37536
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
581
7f1d2f3ba6ae Clear ununused functions from proxy.[ch] including purple_proxy_connect_udp()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37535
diff changeset
582 /* 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
583 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
584 purple_proxy_connect_data_destroy(connect_data);
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
585 }
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
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
588 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
589 purple_proxy_connect_data_connected(PurpleProxyConnectData *connect_data)
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
590 {
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
591 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
592 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
593
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
594 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
595
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 * 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
598 * 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
599 * we destroy the connect_data.
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
600 */
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
601 connect_data->fd = -1;
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
602
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
603 purple_proxy_connect_data_disconnect(connect_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
604 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
605 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
606
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
607 PurpleProxyInfo *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
608 purple_proxy_get_setup(PurpleAccount *account)
1087
bc9c6b635358 [gaim-migrate @ 1097]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
609 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
610 PurpleProxyInfo *gpi = NULL;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
611 const gchar *tmp;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
612
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
613 /* 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
614 static PurpleProxyInfo *tmp_none_proxy_info = NULL;
15032
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
615 if (!tmp_none_proxy_info) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
616 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
617 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
618 }
65a111aba7a8 [gaim-migrate @ 17749]
Daniel Atallah <datallah@pidgin.im>
parents: 15015
diff changeset
619
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
620 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
621 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
622 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
623 gpi = NULL;
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
624 }
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
625 if (gpi == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
626 if (purple_running_gnome())
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
627 gpi = purple_gnome_proxy_get_info();
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
628 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
629 gpi = purple_global_proxy_get_info();
15041
18a6f6cdce33 [gaim-migrate @ 17758]
Daniel Atallah <datallah@pidgin.im>
parents: 15032
diff changeset
630 }
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
631
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
632 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
633 if ((tmp = g_getenv("HTTP_PROXY")) != NULL ||
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
634 (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
635 (tmp = g_getenv("HTTPPROXY")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
636 {
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
637 PurpleHttpURL *url;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
638
9129
9510867e614f [gaim-migrate @ 9907]
Nathan Walp <nwalp@pidgin.im>
parents: 9100
diff changeset
639 /* http_proxy-format:
9227
95c28297b72c [gaim-migrate @ 10023]
Don Seiler <rizzo@gentoo.org>
parents: 9148
diff changeset
640 * 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
641 */
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
642 url = purple_http_url_parse(tmp);
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
643 if (!url) {
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
644 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
645 return gpi;
7652
d60ba2565661 [gaim-migrate @ 8296]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7475
diff changeset
646 }
34219
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
647
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
648 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
649 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
650 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
651 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
652
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
653 /* 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
654 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
655 (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("HTTPPROXYUSER")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
657 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
658
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
659 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
660 (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("HTTPPROXYPASS")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
662 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
663
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
664 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
665 (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("HTTPPROXYPORT")) != NULL)
eee308def583 HTTP: get rid of purple_url_parse
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34218
diff changeset
667 purple_proxy_info_set_port(gpi, atoi(tmp));
10534
c28eef1b882a [gaim-migrate @ 11866]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10320
diff changeset
668 } else {
24171
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
669 #ifdef _WIN32
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
670 PurpleProxyInfo *wgpi;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
671 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
672 return wgpi;
d976cc3db118 Add support for reading SOCKS proxy information from the Windows proxy settings.
Daniel Atallah <datallah@pidgin.im>
parents: 24156
diff changeset
673 #endif
10534
c28eef1b882a [gaim-migrate @ 11866]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10320
diff changeset
674 /* 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
675 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
676 gpi = tmp_none_proxy_info;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6320
diff changeset
677 }
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
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
681 return gpi;
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
682 }
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
683
37533
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
684 /* 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
685 * 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
686 */
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
687 static int
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
688 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
689 {
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
690 #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
691 HANDLE newfd;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
692
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
693 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
694 (HANDLE)fd,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
695 GetCurrentProcess (),
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
696 &newfd,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
697 0,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
698 FALSE,
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
699 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
700 {
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
701 return -1;
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
702 }
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
703
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
704 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
705 #else
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
706 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
707 #endif
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
708 }
5749c9ff9c82 Add cross-platform duplicate_fd() function to support Gio-ifying proxy.c
Mike Ruprecht <cmaiku@gmail.com>
parents: 37532
diff changeset
709 /* 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
710
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
711 static void
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
712 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
713 {
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
714 PurpleProxyConnectData *connect_data = user_data;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
715 GSocketConnection *conn;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
716 GError *error = NULL;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
717 GSocket *socket;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
718
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
719 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
720 res, &error);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
721 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
722 /* 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
723 * been freed
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
724 */
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
725 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
726 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
727 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
728 "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
729 error->message);
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
730 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
731 "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
732 "host.\n");
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
733 }
1e58ac9ee097 Don't have proxy code call callbacks if connect data disposed
Mike Ruprecht <cmaiku@gmail.com>
parents: 37537
diff changeset
734
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
735 g_clear_error(&error);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
736 return;
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
737 }
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 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
740 g_assert(socket != NULL);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
741
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
742 /* 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
743 * 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
744 * 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
745 * 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
746 * 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
747 * file descriptor is duplicated.
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
748 */
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
749 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
750 g_object_unref(conn);
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
751
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
752 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
753 }
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
754
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
755 PurpleProxyConnectData *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
756 purple_proxy_connect(void *handle, PurpleAccount *account,
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
757 const char *host, int port,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
758 PurpleProxyConnectFunction connect_cb, gpointer data)
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
759 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
760 PurpleProxyConnectData *connect_data;
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
761 GSocketClient *client;
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
762 GError *error = NULL;
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
763
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
764 g_return_val_if_fail(host != NULL, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
765 g_return_val_if_fail(port > 0, NULL);
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
766 g_return_val_if_fail(connect_cb != NULL, NULL);
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
767
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
768 connect_data = g_new0(PurpleProxyConnectData, 1);
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
769 connect_data->fd = -1;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
770 connect_data->handle = handle;
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
771 connect_data->connect_cb = connect_cb;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
772 connect_data->data = data;
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
773 connect_data->host = g_strdup(host);
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
774 connect_data->port = port;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
775 connect_data->gpi = purple_proxy_get_setup(account);
13515
0cea461e904c [gaim-migrate @ 15890]
Bartosz Oler <bartosz@pidgin.im>
parents: 13426
diff changeset
776
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
777 client = purple_gio_socket_client_new(account, &error);
37535
447036b8779a Port purple_proxy_connect() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37534
diff changeset
778
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
779 if (client == NULL) {
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
780 /* Assume it's a proxy error */
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
781 purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
782 error->message,
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
783 purple_request_cpar_from_account(account));
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
784 g_clear_error(&error);
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
785
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
786 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
787 return NULL;
1840
770bc15f419c [gaim-migrate @ 1850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1705
diff changeset
788 }
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3867
diff changeset
789
37451
927a083a6c9f This probably doesn't work, but it compiles (for now)
Gary Kramlich <grim@reaperworld.com>
parents: 37193
diff changeset
790 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
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 GSocketClient *client;
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
955 GError *error = NULL;
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
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
970 client = purple_gio_socket_client_new(account, &error);
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
971
37964
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
972 if (client == NULL) {
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
973 /* Assume it's a proxy error */
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
974 purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
975 error->message,
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
976 purple_request_cpar_from_account(account));
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
977 g_clear_error(&error);
39fca28f1a6e proxy: Use new purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37942
diff changeset
978
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
979 purple_proxy_connect_data_destroy(connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
980 return NULL;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
981 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
982
37534
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
983 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
984
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
985 purple_debug_info("proxy",
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
986 "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
987 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
988 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
989 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
990
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
991 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
992 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
993 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
994 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
995 connect_data);
355492f1084d Port purple_proxy_connect_socks5_account() to use Gio internally
Mike Ruprecht <cmaiku@gmail.com>
parents: 37533
diff changeset
996 g_object_unref(client);
31742
e6eb15f2734b proxy: Use account proxy when making standalone SOCKS5 connections.
Daniel Atallah <datallah@pidgin.im>
parents: 31678
diff changeset
997
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
998 handles = g_slist_prepend(handles, connect_data);
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
999
14324
8cbedd82b6ac [gaim-migrate @ 16944]
Mark Doliner <markdoliner@pidgin.im>
parents: 14300
diff changeset
1000 return connect_data;
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
1001 }
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
1002
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
1003 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1004 purple_proxy_connect_cancel(PurpleProxyConnectData *connect_data)
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
1005 {
32129
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
1006 g_return_if_fail(connect_data != NULL);
5f9d676cefdb Fix a possible XMPP remote crash
Mark Doliner <markdoliner@pidgin.im>
parents: 32070
diff changeset
1007
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1008 purple_proxy_connect_data_disconnect(connect_data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1009 purple_proxy_connect_data_destroy(connect_data);
14165
0f09ac2220f4 [gaim-migrate @ 16734]
Mark Doliner <markdoliner@pidgin.im>
parents: 14161
diff changeset
1010 }
8262
fa907a654af9 [gaim-migrate @ 8985]
Nathan Walp <nwalp@pidgin.im>
parents: 8231
diff changeset
1011
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1012 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1013 purple_proxy_connect_cancel_with_handle(void *handle)
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1014 {
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1015 GSList *l, *l_next;
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 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
1018 PurpleProxyConnectData *connect_data = l->data;
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1019
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1020 l_next = l->next;
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 if (connect_data->handle == handle)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1023 purple_proxy_connect_cancel(connect_data);
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1024 }
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1025 }
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1026
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1027 GProxyResolver *
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1028 purple_proxy_get_proxy_resolver(PurpleAccount *account, GError **error)
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1029 {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1030 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
1031 const gchar *protocol;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1032 const gchar *username;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1033 const gchar *password;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1034 gchar *auth;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1035 gchar *proxy;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1036 GProxyResolver *resolver;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1037
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1038 if (purple_proxy_info_get_proxy_type(info) == PURPLE_PROXY_NONE) {
37942
33f8691a69df proxy: don't use default resolver if direct connection is wanted
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37939
diff changeset
1039 /* Return an empty simple resolver, which will resolve on direct
33f8691a69df proxy: don't use default resolver if direct connection is wanted
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37939
diff changeset
1040 * connection. */
33f8691a69df proxy: don't use default resolver if direct connection is wanted
Jakub Adam <jakub.adam@ktknet.cz>
parents: 37939
diff changeset
1041 return g_simple_proxy_resolver_new(NULL, NULL);
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1042 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1043
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1044 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
1045 {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1046 /* 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
1047
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1048 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
1049 /* Intentional passthrough */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1050 case PURPLE_PROXY_HTTP:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1051 protocol = "http";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1052 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1053 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
1054 protocol = "socks4";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1055 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1056 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
1057 /* Intentional passthrough */
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1058 case PURPLE_PROXY_TOR:
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1059 protocol = "socks5";
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1060 break;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1061
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1062 default:
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1063 g_set_error(error, PURPLE_CONNECTION_ERROR,
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1064 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1065 _("Invalid Proxy type (%d) specified"),
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1066 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
1067 return NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1068 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1069
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1070
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1071 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
1072 purple_proxy_info_get_port(info) <= 0) {
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1073 g_set_error_literal(error, PURPLE_CONNECTION_ERROR,
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1074 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1075 _("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
1076 "specified for your given proxy type is "
37965
b67fb3fb5f85 proxy: Add GError argument to purple_proxy_get_proxy_resolver()
Mike Ruprecht <cmaiku@gmail.com>
parents: 37964
diff changeset
1077 "invalid."));
37532
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1078 return NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1079 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1080
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1081 /* 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
1082
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1083 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
1084 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
1085
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1086 /* 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
1087 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
1088 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
1089 } 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
1090 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
1091 } else {
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1092 auth = NULL;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1093 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1094
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1095 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
1096 auth != NULL ? auth : "",
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1097 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
1098 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
1099 g_free(auth);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1100
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1101 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
1102 g_free(proxy);
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1103
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1104 return resolver;
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1105 }
5aaf2d93e7e3 Implement function to get a GProxyResolver with an account's settings
Mike Ruprecht <cmaiku@gmail.com>
parents: 37518
diff changeset
1106
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1107 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1108 proxy_pref_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12811
diff changeset
1109 gconstpointer value, gpointer data)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1110 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1111 PurpleProxyInfo *info = purple_global_proxy_get_info();
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1112
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
1113 if (purple_strequal(name, "/purple/proxy/type")) {
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1114 int proxytype;
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12811
diff changeset
1115 const char *type = value;
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
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(type, "none"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1118 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
1119 else if (purple_strequal(type, "http"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1120 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
1121 else if (purple_strequal(type, "socks4"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1122 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
1123 else if (purple_strequal(type, "socks5"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1124 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
1125 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
1126 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
1127 else if (purple_strequal(type, "envvar"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1128 proxytype = PURPLE_PROXY_USE_ENVVAR;
6001
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1129 else
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1130 proxytype = -1;
1abbeff6571c [gaim-migrate @ 6449]
Mark Doliner <markdoliner@pidgin.im>
parents: 5970
diff changeset
1131
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
1132 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
1133 } 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
1134 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
1135 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
1136 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
1137 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
1138 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
1139 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
1140 purple_proxy_info_set_password(info, value);
1087
bc9c6b635358 [gaim-migrate @ 1097]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1057
diff changeset
1141 }
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1142
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1143 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1144 purple_proxy_get_handle()
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1145 {
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1146 static int handle;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1147
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1148 return &handle;
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1149 }
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1150
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1151 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1152 purple_proxy_init(void)
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1153 {
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1154 void *handle;
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1155
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1156 /* Initialize a default proxy info struct. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1157 global_proxy_info = purple_proxy_info_new();
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1158
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1159 /* 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
1160 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
1161 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
1162 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
1163 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
1164 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
1165 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
1166 purple_prefs_add_bool("/purple/proxy/socks4_remotedns", FALSE);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1167
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1168 /* Setup callbacks for the preferences. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1169 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
1170 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
1171 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
1172 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
1173 NULL);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16037
diff changeset
1174 purple_prefs_connect_callback(handle, "/purple/proxy/port", 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/username",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1177 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
1178 purple_prefs_connect_callback(handle, "/purple/proxy/password",
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13085
diff changeset
1179 proxy_pref_cb, NULL);
20053
68ce40196f8a grab revision 6be36979d022284283217c2a32f2b812740cbbf3
Luke Schierer <lschiere@pidgin.im>
parents: 19985
diff changeset
1180
68ce40196f8a grab revision 6be36979d022284283217c2a32f2b812740cbbf3
Luke Schierer <lschiere@pidgin.im>
parents: 19985
diff changeset
1181 /* Load the initial proxy settings */
20055
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1182 purple_prefs_trigger_callback("/purple/proxy/type");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1183 purple_prefs_trigger_callback("/purple/proxy/host");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1184 purple_prefs_trigger_callback("/purple/proxy/port");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1185 purple_prefs_trigger_callback("/purple/proxy/username");
ca7144d5605f grab revision 240d37f3b465527200f862ff3c0da77618ae32ae
Luke Schierer <lschiere@pidgin.im>
parents: 20053
diff changeset
1186 purple_prefs_trigger_callback("/purple/proxy/password");
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1187 }
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1188
14151
34427f138b1f [gaim-migrate @ 16712]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1189 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1190 purple_proxy_uninit(void)
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1191 {
14899
c65f0b4fb351 [gaim-migrate @ 17606]
Mark Doliner <markdoliner@pidgin.im>
parents: 14536
diff changeset
1192 while (handles != NULL)
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
1193 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1194 purple_proxy_connect_data_disconnect(handles->data, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15746
diff changeset
1195 purple_proxy_connect_data_destroy(handles->data);
14513
fe63cd247350 [gaim-migrate @ 17165]
Mark Doliner <markdoliner@pidgin.im>
parents: 14454
diff changeset
1196 }
28177
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1197
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1198 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
1199
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27943
diff changeset
1200 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
1201 global_proxy_info = NULL;
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9863
diff changeset
1202 }

mercurial