Mercurial > pidgin
comparison src/proxy.h @ 5681:46d7ad0dfa26
[gaim-migrate @ 6100]
Rewrote the proxy code. It should now work with the new prefs, and it has a
namespace and API too!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Tue, 03 Jun 2003 02:00:33 +0000 |
parents | dfdea22a7153 |
children | cec7988f8ee7 |
comparison
equal
deleted
inserted
replaced
5680:71cc0d5376c2 | 5681:46d7ad0dfa26 |
---|---|
1 /** | 1 /** |
2 * @file proxy.h Proxy functions | 2 * @file proxy.h Proxy API |
3 * @ingroup core | 3 * @ingroup core |
4 * | 4 * |
5 * gaim | 5 * gaim |
6 * | 6 * |
7 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | 7 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> |
8 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
8 * | 9 * |
9 * This program is free software; you can redistribute it and/or modify | 10 * This program is free software; you can redistribute it and/or modify |
10 * it under the terms of the GNU General Public License as published by | 11 * it under the terms of the GNU General Public License as published by |
11 * the Free Software Foundation; either version 2 of the License, or | 12 * the Free Software Foundation; either version 2 of the License, or |
12 * (at your option) any later version. | 13 * (at your option) any later version. |
18 * | 19 * |
19 * You should have received a copy of the GNU General Public License | 20 * You should have received a copy of the GNU General Public License |
20 * along with this program; if not, write to the Free Software | 21 * along with this program; if not, write to the Free Software |
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 */ | 23 */ |
23 | 24 #ifndef _GAIM_PROXY_H_ |
24 /* this is the export part of the proxy.c file. it does a little | 25 #define _GAIM_PROXY_H_ |
25 prototype-ing stuff and redefine some net function to mask them | |
26 with some kind of transparent layer */ | |
27 | |
28 #ifndef _PROXY_H_ | |
29 #define _PROXY_H_ | |
30 | 26 |
31 #include <sys/types.h> | 27 #include <sys/types.h> |
32 /*this must happen before sys/socket.h or freebsd won't compile*/ | 28 /*this must happen before sys/socket.h or freebsd won't compile*/ |
33 | 29 |
34 #ifndef _WIN32 | 30 #ifndef _WIN32 |
35 #include <sys/socket.h> | 31 # include <sys/socket.h> |
36 #include <netdb.h> | 32 # include <netdb.h> |
37 #include <netinet/in.h> | 33 # include <netinet/in.h> |
38 #else | 34 #else |
39 #include <winsock.h> | 35 # include <winsock.h> |
40 #endif | 36 #endif |
41 | 37 |
42 #include <glib.h> | 38 #include <glib.h> |
43 | 39 |
44 #include "core.h" | 40 #include "core.h" |
45 | 41 #include "account.h" |
46 typedef enum { | 42 |
47 PROXY_USE_GLOBAL = -1, | 43 /** |
48 PROXY_NONE = 0, | 44 * A type of proxy connection. |
49 PROXY_HTTP, | 45 */ |
50 PROXY_SOCKS4, | 46 typedef enum |
51 PROXY_SOCKS5, | 47 { |
52 } proxytype_t; | 48 GAIM_PROXY_USE_GLOBAL = -1, /**< Use the global proxy information. */ |
53 | 49 GAIM_PROXY_NONE = 0, /**< No proxy. */ |
54 struct gaim_proxy_info { | 50 GAIM_PROXY_HTTP, /**< HTTP proxy. */ |
55 int proxytype; | 51 GAIM_PROXY_SOCKS4, /**< SOCKS 4 proxy. */ |
56 char proxyhost[128]; | 52 GAIM_PROXY_SOCKS5, /**< SOCKS 5 proxy. */ |
57 proxytype_t proxyport; | 53 |
58 char proxyuser[128]; | 54 } GaimProxyType; |
59 char proxypass[128]; | 55 |
60 }; | 56 /** |
61 | 57 * An input condition. |
62 extern struct gaim_proxy_info global_proxy_info; | 58 */ |
63 extern guint proxy_info_is_from_gaimrc; | 59 typedef enum |
64 | 60 { |
65 typedef enum { | 61 GAIM_INPUT_READ = 1 << 0, |
66 GAIM_INPUT_READ = 1 << 0, | |
67 GAIM_INPUT_WRITE = 1 << 1 | 62 GAIM_INPUT_WRITE = 1 << 1 |
63 | |
68 } GaimInputCondition; | 64 } GaimInputCondition; |
65 | |
66 /** | |
67 * Information on proxy settings. | |
68 */ | |
69 typedef struct | |
70 { | |
71 GaimProxyType type; /**< The proxy type. */ | |
72 | |
73 char *host; /**< The host. */ | |
74 int port; /**< The port number. */ | |
75 char *username; /**< The username. */ | |
76 char *password; /**< The password. */ | |
77 | |
78 } GaimProxyInfo; | |
79 | |
69 typedef void (*GaimInputFunction)(gpointer, gint, GaimInputCondition); | 80 typedef void (*GaimInputFunction)(gpointer, gint, GaimInputCondition); |
70 | 81 |
71 extern gint gaim_input_add(int, GaimInputCondition, GaimInputFunction, gpointer); | 82 /**************************************************************************/ |
72 extern void gaim_input_remove(gint); | 83 /** @name Proxy structure API */ |
73 | 84 /**************************************************************************/ |
74 extern int proxy_connect(GaimAccount *account, const char *host, int port, GaimInputFunction func, gpointer data); | 85 /*@{*/ |
75 | 86 |
76 #endif /* _PROXY_H_ */ | 87 /** |
88 * Creates a proxy information structure. | |
89 * | |
90 * @return The proxy information structure. | |
91 */ | |
92 GaimProxyInfo *gaim_proxy_info_new(void); | |
93 | |
94 /** | |
95 * Destroys a proxy information structure. | |
96 * | |
97 * @param proxy The proxy information structure to destroy. | |
98 */ | |
99 void gaim_proxy_info_destroy(GaimProxyInfo *info); | |
100 | |
101 /** | |
102 * Sets the type of proxy. | |
103 * | |
104 * @param proxy The proxy information. | |
105 * @param type The proxy type. | |
106 */ | |
107 void gaim_proxy_info_set_type(GaimProxyInfo *info, GaimProxyType type); | |
108 | |
109 /** | |
110 * Sets the proxy host. | |
111 * | |
112 * @param proxy The proxy information. | |
113 * @param host The host. | |
114 */ | |
115 void gaim_proxy_info_set_host(GaimProxyInfo *info, const char *host); | |
116 | |
117 /** | |
118 * Sets the proxy port. | |
119 * | |
120 * @param proxy The proxy information. | |
121 * @param port The port. | |
122 */ | |
123 void gaim_proxy_info_set_port(GaimProxyInfo *info, int port); | |
124 | |
125 /** | |
126 * Sets the proxy username. | |
127 * | |
128 * @param proxy The proxy information. | |
129 * @param username The username. | |
130 */ | |
131 void gaim_proxy_info_set_username(GaimProxyInfo *info, const char *username); | |
132 | |
133 /** | |
134 * Sets the proxy password. | |
135 * | |
136 * @param proxy The proxy information. | |
137 * @param password The password. | |
138 */ | |
139 void gaim_proxy_info_set_password(GaimProxyInfo *info, const char *password); | |
140 | |
141 /** | |
142 * Returns the proxy's type. | |
143 * | |
144 * @param The proxy information. | |
145 * | |
146 * @return The type. | |
147 */ | |
148 GaimProxyType gaim_proxy_info_get_type(const GaimProxyInfo *info); | |
149 | |
150 /** | |
151 * Returns the proxy's host. | |
152 * | |
153 * @param The proxy information. | |
154 * | |
155 * @return The host. | |
156 */ | |
157 const char *gaim_proxy_info_get_host(const GaimProxyInfo *info); | |
158 | |
159 /** | |
160 * Returns the proxy's port. | |
161 * | |
162 * @param The proxy information. | |
163 * | |
164 * @return The port. | |
165 */ | |
166 int gaim_proxy_info_get_port(const GaimProxyInfo *info); | |
167 | |
168 /** | |
169 * Returns the proxy's username. | |
170 * | |
171 * @param The proxy information. | |
172 * | |
173 * @return The username. | |
174 */ | |
175 const char *gaim_proxy_info_get_username(const GaimProxyInfo *info); | |
176 | |
177 /** | |
178 * Returns the proxy's password. | |
179 * | |
180 * @param The proxy information. | |
181 * | |
182 * @return The password. | |
183 */ | |
184 const char *gaim_proxy_info_get_password(const GaimProxyInfo *info); | |
185 | |
186 /*@}*/ | |
187 | |
188 /**************************************************************************/ | |
189 /** @name Global Proxy API */ | |
190 /**************************************************************************/ | |
191 /*@{*/ | |
192 | |
193 /** | |
194 * Sets whether or not the global proxy information is from preferences. | |
195 * | |
196 * @param from_prefs @c TRUE if the info is from preferences. | |
197 */ | |
198 void gaim_global_proxy_set_from_prefs(gboolean from_prefs); | |
199 | |
200 /** | |
201 * Returns gaim's global proxy information. | |
202 * | |
203 * @return The global proxy information. | |
204 */ | |
205 GaimProxyInfo *gaim_global_proxy_get_info(void); | |
206 | |
207 /** | |
208 * Returns whether or not the current global proxy information is from | |
209 * preferences. | |
210 * | |
211 * @return @c TRUE if the info is from preferences. | |
212 */ | |
213 gboolean gaim_global_proxy_is_from_prefs(void); | |
214 | |
215 /*@}*/ | |
216 | |
217 /**************************************************************************/ | |
218 /** @name Proxy API */ | |
219 /**************************************************************************/ | |
220 /*@{*/ | |
221 | |
222 /** | |
223 * Initializes the proxy subsystem. | |
224 */ | |
225 void gaim_proxy_init(void); | |
226 | |
227 /** | |
228 * Adds an input handler. | |
229 * | |
230 * @param source The input source. | |
231 * @param cond The condition type. | |
232 * @param func The callback function for data. | |
233 * @param user_data User-specified data. | |
234 * | |
235 * @return The resulting handle. | |
236 */ | |
237 gint gaim_input_add(int source, GaimInputCondition cond, | |
238 GaimInputFunction func, gpointer user_data); | |
239 | |
240 /** | |
241 * Removes an input handler. | |
242 * | |
243 * @param handle The handle of the input handler. | |
244 */ | |
245 void gaim_input_remove(gint handle); | |
246 | |
247 /** | |
248 * Makes a connection to the specified host and port. | |
249 * | |
250 * @param account The account making the connection. | |
251 * @param host The destination host. | |
252 * @Param port The destination port. | |
253 * @Param func The input handler function. | |
254 * @param data User-defined data. | |
255 * | |
256 * @return The socket handle. | |
257 */ | |
258 int gaim_proxy_connect(GaimAccount *account, const char *host, int port, | |
259 GaimInputFunction func, gpointer data); | |
260 | |
261 /*@}*/ | |
262 | |
263 #endif /* _GAIM_PROXY_H_ */ |