gaim/gaim

Default Environmental proxy to the IE http proxy.
oldstatus
2005-08-06, Daniel Atallah
a8062087566a
Parents 690d89cc7cf7
Children 6fcfd7fbb264
Default Environmental proxy to the IE http proxy.
--- a/ChangeLog.win32 Wed Aug 03 20:57:44 2005 -0400
+++ b/ChangeLog.win32 Sat Aug 06 00:00:30 2005 -0400
@@ -1,6 +1,8 @@
version 1.5.0:
* The installer now supports downloading and installing
spellchecking support.
+ * Environmental proxy settings will now default to the Internet Explorer
+ http proxy, if one is present.
version 1.4.0 (7/7/2005):
* On Windows XP or newer, the non-debug version of gaim will attempt
--- a/src/win_gaim.c Wed Aug 03 20:57:44 2005 -0400
+++ b/src/win_gaim.c Sat Aug 06 00:00:30 2005 -0400
@@ -39,6 +39,8 @@
# define ATTACH_PARENT_PROCESS -1
#endif
+#define WIN32_PROXY_REGKEY "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
+
typedef int (CALLBACK* LPFNGAIMMAIN)(HINSTANCE, int, char**);
typedef void (CALLBACK* LPFNSETDLLDIRECTORY)(LPCTSTR);
typedef BOOL (CALLBACK* LPFNATTACHCONSOLE)(DWORD);
@@ -73,7 +75,7 @@
"???"),
sub_key, val_name, retv, szBuf);
}
- RegCloseKey(key);
+ RegCloseKey(hkey);
}
else {
TCHAR szBuf[80];
@@ -272,6 +274,46 @@
return TRUE;
}
+static void wgaim_set_proxy() {
+ DWORD regval = 1;
+ DWORD reglen = sizeof(DWORD);
+
+ /* If the proxy server environment variables are already set,
+ * we shouldn't override them */
+ if (getenv("HTTP_PROXY") || getenv("http_proxy") || getenv("HTTPPROXY"))
+ return;
+
+ if (read_reg_string(HKEY_CURRENT_USER, WIN32_PROXY_REGKEY, "ProxyEnable",
+ (LPBYTE) &regval, &reglen) && (regval & 1)) {
+ char proxy_server[2048];
+ char *c = NULL;
+ reglen = sizeof(proxy_server);
+
+ if (!read_reg_string(HKEY_CURRENT_USER, WIN32_PROXY_REGKEY , "ProxyServer",
+ (LPBYTE) &proxy_server, &reglen))
+ return;
+
+ if ((reglen > strlen("http=")) && (c = strstr(proxy_server, "http="))) {
+ char *d;
+ c += strlen("http=");
+ d = strchr(c, ';');
+ if (d) {
+ *d = '\0';
+ }
+ /* c now points the proxy server (and port) */
+ }
+
+ if (c) {
+ const char envstr_prefix[] = "HTTP_PROXY=http://";
+ char envstr[sizeof(envstr_prefix) + strlen(c) + 1];
+ snprintf(envstr, sizeof(envstr), "%s%s", envstr_prefix, c);
+ printf("Setting HTTP Proxy: %s\n", envstr);
+ putenv(envstr);
+ }
+ }
+
+}
+
#ifdef __GNUC__
# ifndef _stdcall
# define _stdcall __attribute__((stdcall))
@@ -325,9 +367,11 @@
if(!getenv("GAIM_NO_DLL_CHECK"))
dll_prep();
- wgaim_set_locale();
- if(!getenv("GAIM_MULTI_INST") && !wgaim_set_running())
- return 0;
+ wgaim_set_locale();
+ if(!getenv("GAIM_MULTI_INST") && !wgaim_set_running())
+ return 0;
+
+ wgaim_set_proxy();
/* Now we are ready for Gaim .. */
if((hmod=LoadLibrary("gaim.dll"))) {