1package ieproxy 2 3import "golang.org/x/sys/windows" 4 5var winHttp = windows.NewLazySystemDLL("winhttp.dll") 6var winHttpGetProxyForURL = winHttp.NewProc("WinHttpGetProxyForUrl") 7var winHttpOpen = winHttp.NewProc("WinHttpOpen") 8var winHttpCloseHandle = winHttp.NewProc("WinHttpCloseHandle") 9var winHttpGetIEProxyConfigForCurrentUser = winHttp.NewProc("WinHttpGetIEProxyConfigForCurrentUser") 10var winHttpGetDefaultProxyConfiguration = winHttp.NewProc("WinHttpGetDefaultProxyConfiguration") 11 12type tWINHTTP_AUTOPROXY_OPTIONS struct { 13 dwFlags autoProxyFlag 14 dwAutoDetectFlags autoDetectFlag 15 lpszAutoConfigUrl *uint16 16 lpvReserved *uint16 17 dwReserved uint32 18 fAutoLogonIfChallenged bool 19} 20type autoProxyFlag uint32 21 22const ( 23 fWINHTTP_AUTOPROXY_AUTO_DETECT = autoProxyFlag(0x00000001) 24 fWINHTTP_AUTOPROXY_CONFIG_URL = autoProxyFlag(0x00000002) 25 fWINHTTP_AUTOPROXY_NO_CACHE_CLIENT = autoProxyFlag(0x00080000) 26 fWINHTTP_AUTOPROXY_NO_CACHE_SVC = autoProxyFlag(0x00100000) 27 fWINHTTP_AUTOPROXY_NO_DIRECTACCESS = autoProxyFlag(0x00040000) 28 fWINHTTP_AUTOPROXY_RUN_INPROCESS = autoProxyFlag(0x00010000) 29 fWINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = autoProxyFlag(0x00020000) 30 fWINHTTP_AUTOPROXY_SORT_RESULTS = autoProxyFlag(0x00400000) 31) 32 33type autoDetectFlag uint32 34 35const ( 36 fWINHTTP_AUTO_DETECT_TYPE_DHCP = autoDetectFlag(0x00000001) 37 fWINHTTP_AUTO_DETECT_TYPE_DNS_A = autoDetectFlag(0x00000002) 38) 39 40type tWINHTTP_PROXY_INFO struct { 41 dwAccessType uint32 42 lpszProxy *uint16 43 lpszProxyBypass *uint16 44} 45 46type tWINHTTP_CURRENT_USER_IE_PROXY_CONFIG struct { 47 fAutoDetect bool 48 lpszAutoConfigUrl *uint16 49 lpszProxy *uint16 50 lpszProxyBypass *uint16 51} 52