//go:build windows

package yu_proxy

import (
	yu_curl "gogs.qqck.cn/s/tools/curl"
	yu_json "gogs.qqck.cn/s/tools/json"
	yu_rand "gogs.qqck.cn/s/tools/rand"
)

var Internet_host, _ = yu_dns.ResolveIPS("im.qq.com")

// Internet 是否可链接互联网
// timeout 单位：毫秒
func (t *Info) Internet(timeout int) bool {
	j_curl := yu_curl.NewRequest().SetRdirect(false).SetTimeout(timeout)
	defer j_curl.Close()
	// im.qq.com
	return j_curl.SetProxy(t.Encode()).Get("http://"+Internet_host[yu_rand.Intn(len(Internet_host))]).RespErr() == nil && j_curl.RespStatusCode() == 404
}

type AddrInfo struct {
	// 真实IP地址
	Ip string `json:"ip"`
	// 运营商
	Isp string `json:"isp"`
	// 省份
	Province string `json:"province"`
	// 城市
	City string `json:"city"`
}

func (t *AddrInfo) IsVaild() bool {
	return t.Ip != ""
}

// // Info （https://ip.useragentinfo.com/json）获取本机或指定代理IP的详细信息
// // info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// // timeout 超时时间，单位：毫秒，0为默认的300s
// func (t *Info) Info(timeout int) (info AddrInfo) {
// 	if !t.IsValid() {
// 		return
// 	}
// 	j_curl := yu_curl.NewRequest()
// 	defer j_curl.Close()
// 	// {"country": "中国", "short_name": "CN", "province": "河南省", "city": "郑州市", "area": "中原区", "isp": "电信", "net": "", "ip": "171.11.4.183", "code": 200, "desc": "success"}
// 	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("https://ip.useragentinfo.com/json").RespErr() == nil {
// 		j_json := yu_json.ParseBytes(j_curl.RespBody())
// 		if j_json.Exists() {
// 			info.Ip, info.Isp = j_json.Get("ip").String(), j_json.Get("isp").String()
// 			info.Province, info.City = j_json.Get("province").String(), j_json.Get("city").String()
// 		}
// 	}
// 	return
// }

// // InfoEx （http://ping0.cc/geojson）获取本机或指定代理IP的详细信息
// // info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// // timeout 超时时间，单位：毫秒，0为默认的300s
// func (t *Info) InfoEx(timeout int) (info AddrInfo) {
// 	if !t.IsValid() {
// 		return
// 	}
// 	j_curl := yu_curl.NewRequest()
// 	defer j_curl.Close()
// 	// {"ip":"171.11.4.255","location":"中国 河南省郑州市中原中国电信","country":"中国","province":"河南","city":"郑州","asn":"AS4134","org":"Chinanet HA","isidc":false,"iprisk":17}
// 	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("http://ping0.cc/geojson").RespErr() == nil {
// 		j_json := yu_json.ParseBytes(j_curl.RespBody())
// 		if j_json.Exists() {
// 			info.Ip, info.Province, info.City = j_json.Get("ip").String(), j_json.Get("province").String(), j_json.Get("city").String()
// 		}
// 	}
// 	return
// }

// var infoEx_host, _ = yu_dns.ResolveIPS("ping.huatuo.qq.com")
//
// func init() {
// 	for j_i := 0; j_i < len(infoEx_host); j_i++ {
// 		infoEx_host[j_i] = infoEx_host[j_i] + ":"
// 	}
// }
//
// // InfoEx2 （https://ping.huatuo.qq.com/index.php?btype=&userip=）获取本机或指定代理IP的详细信息
// // info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// // timeout 超时时间，单位：毫秒，0为默认的300s
// func (t *Info) InfoEx(timeout int) (info AddrInfo) {
// 	if !t.IsValid() {
// 		return
// 	}
// 	j_curl := yu_curl.NewRequest().SetConnectTo("ping.huatuo.qq.com:", infoEx_host[yu_rand.Intn(len(infoEx_host))])
// 	defer j_curl.Close()
// 	// {"code":0,"msg":"succ","data":{"ip":"1.193.82.33","isp":["\u4e2d\u56fd\u7535\u4fe1","\u6cb3\u5357\u7701","\u90d1\u5dde\u5e02"]}}
// 	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("https://ping.huatuo.qq.com/index.php?btype=&userip=").RespErr() == nil {
// 		j_json := yu_json.ParseBytes(j_curl.RespBody())
// 		if j_json.Exists() {
// 			info.Ip, info.Isp = j_json.Get("data.ip").String(), j_json.Get("data.isp.0").String()
// 			info.Province, info.City = j_json.Get("data.isp.1").String(), j_json.Get("data.isp.2").String()
// 		}
// 	}
// 	return
// }

// // InfoEx3 （http://ip-api.com/json）获取本机或指定代理IP的详细信息
// // info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// // timeout 超时时间，单位：毫秒，0为默认的300s
// func (t *Info) InfoEx2(timeout int) (info AddrInfo) {
// 	if !t.IsValid() {
// 		return
// 	}
// 	j_curl := yu_curl.NewRequest()
// 	defer j_curl.Close()
// 	// {
// 	//  "status": "success",
// 	//  "country": "China",
// 	//  "countryCode": "CN",
// 	//  "region": "HA",
// 	//  "regionName": "Henan",
// 	//  "city": "Zhengzhou",
// 	//  "zip": "",
// 	//  "lat": 34.7599,
// 	//  "lon": 113.6459,
// 	//  "timezone": "Asia/Shanghai",
// 	//  "isp": "CNC Group CHINA169 Henan Province Network",
// 	//  "org": "",
// 	//  "as": "AS4837 CHINA UNICOM China169 Backbone",
// 	//  "query": "219.155.116.243"
// 	// }
// 	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("http://ip-api.com/json").RespErr() == nil {
// 		j_json := yu_json.ParseBytes(j_curl.RespBody())
// 		if j_json.Exists() {
// 			info.Ip, info.Isp = j_json.Get("query").String(), j_json.Get("isp").String()
// 			info.Province, info.City = j_json.Get("regionName").String(), j_json.Get("city").String()
// 		}
// 	}
// 	return
// }
//
// // InfoEx4 （http://whois.pconline.com.cn/ipJson.jsp?ip=&json=true）获取本机或指定代理IP的详细信息
// // info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// // timeout 超时时间，单位：毫秒，0为默认的300s
// func (t *Info) InfoEx3(timeout int) (info AddrInfo) {
// 	if !t.IsValid() {
// 		return
// 	}
// 	j_curl := yu_curl.NewRequest()
// 	defer j_curl.Close()
// 	// {"ip":"171.11.4.255","pro":"河南省","proCode":"410000","city":"郑州市","cityCode":"410100","region":"","regionCode":"0","addr":"河南省郑州市 电信","regionNames":"","err":""}
// 	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("http://whois.pconline.com.cn/ipJson.jsp?ip=&json=true").RespErr() == nil {
// 		j_json := yu_json.Parse(yu_strings.GbkToUtf8(j_curl.RespBodyS()))
// 		if j_json.Exists() {
// 			info.Ip, info.Province, info.City = j_json.Get("ip").String(), j_json.Get("pro").String(), j_json.Get("city").String()
// 		}
// 	}
// 	return
// }

// InfoEx （http://ip-api.com/json/?lang=zh-CN）获取本机或指定代理IP的详细信息
// info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// timeout 超时时间，单位：毫秒，0为默认的300s
func (t *Info) InfoEx(timeout int) (info AddrInfo) {
	if !t.IsValid() {
		return
	}
	j_curl := yu_curl.NewRequest()
	defer j_curl.Close()
	// http://ip-api.com/json/12.65.94.1?lang=zh-CN
	// {
	//  "status": "success",
	//  "country": "中国",
	//  "countryCode": "CN",
	//  "region": "HA",
	//  "regionName": "河南",
	//  "city": "郑州市",
	//  "zip": "",
	//  "lat": 34.7599,
	//  "lon": 113.6459,
	//  "timezone": "Asia/Shanghai",
	//  "isp": "Chinanet",
	//  "org": "Chinanet HA",
	//  "as": "AS4134 CHINANET-BACKBONE",
	//  "query": "171.11.4.255"
	// }
	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("http://ip-api.com/json/?lang=zh-CN").RespErr() == nil {
		j_json := yu_json.ParseBytes(j_curl.RespBody())
		if j_json.Exists() {
			info.Ip, info.Province, info.City = j_json.Get("query").String(), j_json.Get("regionName").String(), j_json.Get("city").String()
		}
	}
	return
}

// Info （http://myip.dnsomatic.com/）获取本机或指定代理IP的真实IP
// info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// timeout 超时时间，单位：毫秒，0为默认的300s
// return
// ip 真实IP地址
func (t *Info) Info(timeout int) (ip string) {
	if !t.IsValid() {
		return
	}
	j_curl := yu_curl.NewRequest()
	defer j_curl.Close()
	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("http://whatismyip.akamai.com/").RespErr() == nil {
		ip = j_curl.RespBodyS()
	}
	return
}

// // Info2 （http://ident.me/）获取本机或指定代理IP的真实IP
// // info "ProxyType://user:pass@host:port" || "" ，例如："Http://user:pass@127.0.0.1:808"、"Socks5://user:pass@127.0.0.1:808"
// // timeout 超时时间，单位：毫秒，0为默认的300s
// // return
// // ip 真实IP地址
// func (t *Info) Info2(timeout int) (ip string) {
// 	if !t.IsValid() {
// 		return
// 	}
// 	j_curl := yu_curl.NewRequest()
// 	defer j_curl.Close()
// 	if j_curl.SetProxy(t.Encode()).SetTimeout(timeout).Get("http://ident.me/").RespErr() == nil {
// 		ip = j_curl.RespBodyS()
// 	}
// 	return
// }

// https://whois.pconline.com.cn/ipJson.jsp?ip=&json=true    是gbk编码，暂时不管
