the additional HTTP2 proxies are considered as HTTPS proxies

This commit is contained in:
rui.zheng 2016-10-08 17:31:35 +08:00
parent 124bfc42ea
commit c3072d4ed0
4 changed files with 11 additions and 3 deletions

View File

@ -147,7 +147,7 @@ gost的HTTP2支持两种模式并自适应
* 作为标准的HTTP2代理并向下兼容HTTPS代理。
* 作为transport(类似于wss),传输其他协议。
**注gost的代理链仅支持一个HTTP2代理节点采用就近原则会将第一个遇到的HTTP2代理节点视为HTTP2代理其他HTTP2代理节点则被视为HTTP代理。**
**注gost的代理链仅支持一个HTTP2代理节点采用就近原则会将第一个遇到的HTTP2代理节点视为HTTP2代理其他HTTP2代理节点则被视为HTTPS代理。**
加密机制
------

View File

@ -140,6 +140,9 @@ func (c *ProxyChain) GetConn() (net.Conn, error) {
return nil, err
}
http2Node := c.nodes[c.http2NodeIndex]
if http2Node.Transport == "http2" {
http2Node.Transport = "h2"
}
if http2Node.Protocol == "http2" {
http2Node.Protocol = "socks5" // assume it as socks5 protocol, so we can do much more things.
}

View File

@ -73,14 +73,14 @@ func (c *ProxyConn) handshake() error {
return err
}
c.conn = conn
case "tls": // tls connection
case "tls", "http2": // tls connection
tlsUsed = true
cfg := &tls.Config{
InsecureSkipVerify: c.Node.insecureSkipVerify(),
ServerName: c.Node.serverName,
}
c.conn = tls.Client(c.conn, cfg)
case "http2":
case "h2": // same as http2, but just set a flag for later using.
tlsUsed = true
default:
}

View File

@ -1,6 +1,7 @@
package gost
import (
"fmt"
"net"
"net/url"
"strconv"
@ -112,3 +113,7 @@ func (node *ProxyNode) keyFile() string {
}
return DefaultKeyFile
}
func (node ProxyNode) String() string {
return fmt.Sprintf("transport: %s, protocol: %s, addr: %s", node.Transport, node.Protocol, node.Addr)
}