Merge branch 'dev' of https://github.com/snail007/goproxy.git into dev
This commit is contained in:
@ -1,6 +1,8 @@
|
||||
proxy更新日志
|
||||
v5.1
|
||||
1.优化了kcp默认mtu配置,调整为450.
|
||||
2.优化了HTTP(S)\SOCKS5代理智能判断,更加精确。
|
||||
3.fix #97 , 修复了RemoveProxyHeaders方法忽略了第一行的bug。
|
||||
|
||||
v5.0
|
||||
1.修复了SPS多端口无效的bug.
|
||||
|
||||
@ -278,7 +278,7 @@ func (s *HTTP) callback(inConn net.Conn) {
|
||||
useProxy = true
|
||||
} else {
|
||||
k := s.Resolve(address)
|
||||
s.checker.Add(k)
|
||||
s.checker.Add(address, k)
|
||||
//var n, m uint
|
||||
useProxy, _, _ = s.checker.IsBlocked(k)
|
||||
//s.log.Printf("blocked ? : %v, %s , fail:%d ,success:%d", useProxy, address, n, m)
|
||||
|
||||
@ -563,7 +563,7 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque
|
||||
useProxy = false
|
||||
} else {
|
||||
k := s.Resolve(request.Addr())
|
||||
s.checker.Add(k)
|
||||
s.checker.Add(request.Addr(), k)
|
||||
useProxy, _, _ = s.checker.IsBlocked(k)
|
||||
}
|
||||
if useProxy {
|
||||
|
||||
@ -640,12 +640,18 @@ func RemoveProxyHeaders(head []byte) []byte {
|
||||
var keys = map[string]bool{}
|
||||
lines := bytes.Split(head, []byte("\r\n"))
|
||||
IsBody := false
|
||||
i := -1
|
||||
for _, line := range lines {
|
||||
i++
|
||||
if len(line) == 0 || IsBody {
|
||||
newLines = append(newLines, line)
|
||||
IsBody = true
|
||||
} else {
|
||||
hline := bytes.SplitN(line, []byte(":"), 2)
|
||||
if i == 0 && IsHTTP(head) {
|
||||
newLines = append(newLines, line)
|
||||
continue
|
||||
}
|
||||
if len(hline) != 2 {
|
||||
continue
|
||||
}
|
||||
|
||||
@ -41,6 +41,7 @@ type CheckerItem struct {
|
||||
Data []byte
|
||||
SuccessCount uint
|
||||
FailCount uint
|
||||
Key string
|
||||
}
|
||||
|
||||
//NewChecker args:
|
||||
@ -173,13 +174,14 @@ func (c *Checker) domainIsInMap(address string, blockedMap bool) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
func (c *Checker) Add(address string) {
|
||||
if c.domainIsInMap(address, false) || c.domainIsInMap(address, true) {
|
||||
func (c *Checker) Add(key, address string) {
|
||||
if c.domainIsInMap(key, false) || c.domainIsInMap(key, true) {
|
||||
return
|
||||
}
|
||||
var item CheckerItem
|
||||
item = CheckerItem{
|
||||
Host: address,
|
||||
Key: key,
|
||||
}
|
||||
c.data.SetIfAbsent(item.Host, item)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user