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

add HTTP2 proxy client support

parent 36b61e05
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
"time" "time"
"github.com/ginuerzh/gost/gost" "github.com/ginuerzh/gost/gost"
"golang.org/x/net/http2"
) )
var ( var (
...@@ -25,6 +26,7 @@ func init() { ...@@ -25,6 +26,7 @@ func init() {
flag.IntVar(&requests, "n", 1, "Number of requests to perform") flag.IntVar(&requests, "n", 1, "Number of requests to perform")
flag.IntVar(&concurrency, "c", 1, "Number of multiple requests to make at a time") flag.IntVar(&concurrency, "c", 1, "Number of multiple requests to make at a time")
flag.BoolVar(&quiet, "q", false, "quiet mode") flag.BoolVar(&quiet, "q", false, "quiet mode")
flag.BoolVar(&http2.VerboseLogs, "v", false, "HTTP2 verbose logs")
flag.BoolVar(&gost.Debug, "d", false, "debug mode") flag.BoolVar(&gost.Debug, "d", false, "debug mode")
flag.Parse() flag.Parse()
...@@ -103,17 +105,13 @@ func main() { ...@@ -103,17 +105,13 @@ func main() {
*/ */
/* /*
// http2+tls, http2+tcp // http2
gost.Node{ gost.Node{
Addr: "127.0.0.1:1443", Addr: "127.0.0.1:1443",
Client: gost.NewClient( Client: &gost.Client{
gost.HTTP2Connector(url.UserPassword("admin", "123456")), Connector: gost.HTTP2Connector(url.UserPassword("admin", "123456")),
gost.HTTP2Transporter( Transporter: gost.HTTP2Transporter(nil),
nil, },
&tls.Config{InsecureSkipVerify: true}, // or nil, will use h2c mode (http2+tcp).
time.Second*1,
),
),
}, },
*/ */
...@@ -149,13 +147,14 @@ func main() { ...@@ -149,13 +147,14 @@ func main() {
}, },
}, },
*/ */
// socks5+h2
gost.Node{ gost.Node{
Addr: "localhost:8443", Addr: "localhost:8443",
Client: &gost.Client{ Client: &gost.Client{
// Connector: gost.HTTPConnector(url.UserPassword("admin", "123456")), // Connector: gost.HTTPConnector(url.UserPassword("admin", "123456")),
Connector: gost.SOCKS5Connector(url.UserPassword("admin", "123456")), Connector: gost.SOCKS5Connector(url.UserPassword("admin", "123456")),
// Transporter: gost.H2CTransporter(), // HTTP2 h2c mode // Transporter: gost.H2CTransporter(), // HTTP2 h2c mode
Transporter: gost.H2Transporter(), // HTTP2 h2 Transporter: gost.H2Transporter(nil), // HTTP2 h2
}, },
}, },
) )
......
...@@ -222,8 +222,7 @@ func http2Server() { ...@@ -222,8 +222,7 @@ func http2Server() {
// http2.VerboseLogs = true // http2.VerboseLogs = true
s := &gost.Server{} s := &gost.Server{}
ln, err := gost.TLSListener(":1443", tlsConfig()) // HTTP2 h2 mode ln, err := gost.HTTP2Listener(":1443", tlsConfig())
// ln, err := gost.TCPListener(":1443") // HTTP2 h2c mode
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
......
This diff is collapsed.
...@@ -9,6 +9,7 @@ func init() { ...@@ -9,6 +9,7 @@ func init() {
log.SetFlags(log.LstdFlags | log.Lshortfile) log.SetFlags(log.LstdFlags | log.Lshortfile)
} }
// LogLogger uses the standard log package as the logger
type LogLogger struct { type LogLogger struct {
} }
...@@ -20,6 +21,7 @@ func (l *LogLogger) Logf(format string, v ...interface{}) { ...@@ -20,6 +21,7 @@ func (l *LogLogger) Logf(format string, v ...interface{}) {
log.Output(3, fmt.Sprintf(format, v...)) log.Output(3, fmt.Sprintf(format, v...))
} }
// NopLogger is a null logger that discards the log outputs
type NopLogger struct { type NopLogger struct {
} }
......
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