Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1994 Microsoft Corporation
Module Name:
apdetect.cxx
Abstract:
This is the overall generic wrappers and entry code to the auto-proxy, auto-detection code, that sends DHCP informs, and mundges through DNS to find an URL for proxy configuration
Author:
Arthur Bierer (arthurbi) 15-Jul-1998
Environment:
User Mode - Win32
Revision History:
Arthur Bierer (arthurbi) 15-Jul-1998 Created
Josh Cohen (joshco) 7-oct-1998 added proxydetecttype --*/
#include <wininetp.h>
#include "aproxp.h"
#include "apdetect.h"
// this isnt the most efficient thing
// should probably move this to autoprox class...
//
DWORD WINAPI GetProxyDetectType(VOID) { static DWORD _adType = PROXY_AUTO_DETECT_TYPE_DEFAULT; static DWORD UseCached = 0;
if (! UseCached ) { InternetReadRegistryDword("AutoProxyDetectType", (LPDWORD)&(_adType) );
if (_adType & PROXY_AUTO_DETECT_CACHE_ME ) { UseCached = 1; }
} return _adType; } STDAPI_(BOOL) DetectAutoProxyUrl( IN OUT LPSTR lpszAutoProxyUrl, IN DWORD dwAutoProxyUrlLength, IN DWORD dwDetectFlags ) { BOOL fRet = FALSE; DWORD error;
DEBUG_ENTER((DBG_SOCKETS, Bool, "DetectAutoProxyUrl", "%x, %u", lpszAutoProxyUrl, dwAutoProxyUrlLength ));
if (!GlobalDataInitialized) { error = GlobalDataInitialize(); if (error != ERROR_SUCCESS) { goto quit; } }
error = LoadWinsock();
if ( error != ERROR_SUCCESS ) { goto quit; }
{ CIpConfig Interfaces; if ( (GetProxyDetectType() & PROXY_AUTO_DETECT_TYPE_DHCP) & dwDetectFlags ) {
//Interfaces.GetAdapterInfo();
if ( Interfaces.DoInformsOnEachInterface(lpszAutoProxyUrl, dwAutoProxyUrlLength) ) { //printf("success on DHCP search: got %s\n", szAutoProxyUrl);
fRet = TRUE; goto quit; } } if ( (GetProxyDetectType() & PROXY_AUTO_DETECT_TYPE_DNS_A) & dwDetectFlags ) { if ( QueryWellKnownDnsName(lpszAutoProxyUrl, dwAutoProxyUrlLength) == ERROR_SUCCESS) { //printf("success on well qualified name search: got %s\n", szAutoProxyUrl);
fRet = TRUE; goto quit; } } }
quit:
DEBUG_LEAVE(fRet);
return fRet; }
|