Commit c3072d4e authored by rui.zheng's avatar rui.zheng

the additional HTTP2 proxies are considered as HTTPS proxies

parent 124bfc42
......@@ -147,7 +147,7 @@ gost的HTTP2支持两种模式并自适应:
* 作为标准的HTTP2代理,并向下兼容HTTPS代理。
* 作为transport(类似于wss),传输其他协议。
**注:gost的代理链仅支持一个HTTP2代理节点,采用就近原则,会将第一个遇到的HTTP2代理节点视为HTTP2代理,其他HTTP2代理节点则被视为HTTP代理。**
**注:gost的代理链仅支持一个HTTP2代理节点,采用就近原则,会将第一个遇到的HTTP2代理节点视为HTTP2代理,其他HTTP2代理节点则被视为HTTPS代理。**
加密机制
------
......
......@@ -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.
}
......
......@@ -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:
}
......
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)
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment