comparison src/win_gaim.c @ 11193:e865bdbbf91d

[gaim-migrate @ 13316] Default Environmental proxy to the IE http proxy. committer: Tailor Script <tailor@pidgin.im>
author Daniel Atallah <daniel.atallah@gmail.com>
date Sat, 06 Aug 2005 04:05:09 +0000
parents 52d6b10025ca
children 9f6df41df587
comparison
equal deleted inserted replaced
11192:fd6232f9a418 11193:e865bdbbf91d
37 /** Currently missing from win32-api */ 37 /** Currently missing from win32-api */
38 #ifndef ATTACH_PARENT_PROCESS 38 #ifndef ATTACH_PARENT_PROCESS
39 # define ATTACH_PARENT_PROCESS -1 39 # define ATTACH_PARENT_PROCESS -1
40 #endif 40 #endif
41 41
42 #define WIN32_PROXY_REGKEY "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
43
42 typedef int (CALLBACK* LPFNGAIMMAIN)(HINSTANCE, int, char**); 44 typedef int (CALLBACK* LPFNGAIMMAIN)(HINSTANCE, int, char**);
43 typedef void (CALLBACK* LPFNSETDLLDIRECTORY)(LPCTSTR); 45 typedef void (CALLBACK* LPFNSETDLLDIRECTORY)(LPCTSTR);
44 typedef BOOL (CALLBACK* LPFNATTACHCONSOLE)(DWORD); 46 typedef BOOL (CALLBACK* LPFNATTACHCONSOLE)(DWORD);
45 47
46 /* 48 /*
71 ((key == HKEY_LOCAL_MACHINE) ? "HKLM" : 73 ((key == HKEY_LOCAL_MACHINE) ? "HKLM" :
72 (key == HKEY_CURRENT_USER) ? "HKCU" : 74 (key == HKEY_CURRENT_USER) ? "HKCU" :
73 "???"), 75 "???"),
74 sub_key, val_name, retv, szBuf); 76 sub_key, val_name, retv, szBuf);
75 } 77 }
76 RegCloseKey(key); 78 RegCloseKey(hkey);
77 } 79 }
78 else { 80 else {
79 TCHAR szBuf[80]; 81 TCHAR szBuf[80];
80 82
81 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, retv, 0, 83 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, retv, 0,
281 } 283 }
282 } 284 }
283 return TRUE; 285 return TRUE;
284 } 286 }
285 287
288 static void wgaim_set_proxy() {
289 DWORD regval = 1;
290 DWORD reglen = sizeof(DWORD);
291
292 /* If the proxy server environment variables are already set,
293 * we shouldn't override them */
294 if (getenv("HTTP_PROXY") || getenv("http_proxy") || getenv("HTTPPROXY"))
295 return;
296
297 if (read_reg_string(HKEY_CURRENT_USER, WIN32_PROXY_REGKEY, "ProxyEnable",
298 (LPBYTE) &regval, &reglen) && (regval & 1)) {
299 char proxy_server[2048];
300 char *c = NULL;
301 reglen = sizeof(proxy_server);
302
303 if (!read_reg_string(HKEY_CURRENT_USER, WIN32_PROXY_REGKEY , "ProxyServer",
304 (LPBYTE) &proxy_server, &reglen))
305 return;
306
307 if ((reglen > strlen("http=")) && (c = strstr(proxy_server, "http="))) {
308 char *d;
309 c += strlen("http=");
310 d = strchr(c, ';');
311 if (d) {
312 *d = '\0';
313 }
314 /* c now points the proxy server (and port) */
315 }
316
317 if (c) {
318 const char envstr_prefix[] = "HTTP_PROXY=http://";
319 char envstr[sizeof(envstr_prefix) + strlen(c) + 1];
320 snprintf(envstr, sizeof(envstr), "%s%s", envstr_prefix, c);
321 printf("Setting HTTP Proxy: %s\n", envstr);
322 putenv(envstr);
323 }
324 }
325
326 }
327
286 #ifdef __GNUC__ 328 #ifdef __GNUC__
287 # ifndef _stdcall 329 # ifndef _stdcall
288 # define _stdcall __attribute__((stdcall)) 330 # define _stdcall __attribute__((stdcall))
289 # endif 331 # endif
290 #endif 332 #endif
334 } 376 }
335 377
336 if(!getenv("GAIM_NO_DLL_CHECK")) 378 if(!getenv("GAIM_NO_DLL_CHECK"))
337 dll_prep(); 379 dll_prep();
338 380
339 wgaim_set_locale(); 381 wgaim_set_locale();
340 if(!getenv("GAIM_MULTI_INST") && !wgaim_set_running()) 382 if(!getenv("GAIM_MULTI_INST") && !wgaim_set_running())
341 return 0; 383 return 0;
384
385 wgaim_set_proxy();
342 386
343 /* Now we are ready for Gaim .. */ 387 /* Now we are ready for Gaim .. */
344 if((hmod=LoadLibrary("gaim.dll"))) { 388 if((hmod=LoadLibrary("gaim.dll"))) {
345 gaim_main = (LPFNGAIMMAIN)GetProcAddress(hmod, "gaim_main"); 389 gaim_main = (LPFNGAIMMAIN)GetProcAddress(hmod, "gaim_main");
346 } 390 }