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