fix #81

Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>
This commit is contained in:
arraykeys@gmail.com
2018-05-31 11:39:29 +08:00
parent b16decf976
commit 5c9fc850d8
4 changed files with 21 additions and 4 deletions

View File

@ -1,4 +1,7 @@
proxy更新日志
v4.9
1.修复了HTTP Basic代理返回不合适的头部,导致浏览器不会弹框,个别代理插件无法认证的问题.
v4.8
1.优化了SPS连接HTTP上级的指令,避免了某些代理不响应的问题.
2.SPS功能增加了参数:

View File

@ -229,7 +229,7 @@ func (s *HTTP) callback(inConn net.Conn) {
address := req.Host
host, _, _ := net.SplitHostPort(address)
useProxy := false
if !utils.IsIternalIP(host) {
if !utils.IsIternalIP(host, *s.cfg.Always) {
useProxy = true
if *s.cfg.Parent == "" {
useProxy = false

View File

@ -519,7 +519,7 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque
if *s.cfg.Parent != "" {
host, _, _ := net.SplitHostPort(request.Addr())
useProxy := false
if utils.IsIternalIP(host) {
if utils.IsIternalIP(host, *s.cfg.Always) {
useProxy = false
} else {
k := s.Resolve(request.Addr())

View File

@ -579,9 +579,23 @@ func HttpGet(URL string, timeout int, host ...string) (body []byte, code int, er
body, err = ioutil.ReadAll(resp.Body)
return
}
func IsIternalIP(domainOrIP string) bool {
func IsIternalIP(domainOrIP string, always bool) bool {
var outIPs []net.IP
outIPs, err := net.LookupIP(domainOrIP)
var err error
var isDomain bool
if net.ParseIP(domainOrIP) == nil {
isDomain = true
}
if always && isDomain {
return false
}
if isDomain {
outIPs, err = net.LookupIP(domainOrIP)
} else {
outIPs = []net.IP{net.ParseIP(domainOrIP)}
}
if err != nil {
return false
}