add proxyAgent options for http/http2 handler
This commit is contained in:
parent
b9e61dca1a
commit
ac554f670c
@ -58,7 +58,7 @@ go build
|
||||
#### Docker
|
||||
|
||||
```bash
|
||||
docker pull ginuerzh/gost
|
||||
docker run --rm ginuerzh/gost -V
|
||||
```
|
||||
|
||||
#### Homebrew
|
||||
|
@ -53,7 +53,7 @@ go build
|
||||
#### Docker
|
||||
|
||||
```bash
|
||||
docker pull ginuerzh/gost
|
||||
docker run --rm ginuerzh/gost -V
|
||||
```
|
||||
|
||||
#### Homebrew
|
||||
|
@ -664,6 +664,7 @@ func (r *route) GenRouters() ([]router, error) {
|
||||
gost.IPsHandlerOption(ips),
|
||||
gost.TCPModeHandlerOption(node.GetBool("tcp")),
|
||||
gost.IPRoutesHandlerOption(tunRoutes...),
|
||||
gost.ProxyAgentHandlerOption(node.Get("proxyAgent")),
|
||||
)
|
||||
|
||||
rt := router{
|
||||
|
2
gost.go
2
gost.go
@ -80,6 +80,8 @@ var (
|
||||
// DefaultUserAgent is the default HTTP User-Agent header used by HTTP and websocket.
|
||||
DefaultUserAgent = "Chrome/78.0.3904.106"
|
||||
|
||||
DefaultProxyAgent = "gost/" + Version
|
||||
|
||||
// DefaultMTU is the default mtu for tun/tap device
|
||||
DefaultMTU = 1350
|
||||
)
|
||||
|
@ -42,6 +42,7 @@ type HandlerOptions struct {
|
||||
IPs []string
|
||||
TCPMode bool
|
||||
IPRoutes []IPRoute
|
||||
ProxyAgent string
|
||||
}
|
||||
|
||||
// HandlerOption allows a common way to set handler options.
|
||||
@ -211,6 +212,13 @@ func IPRoutesHandlerOption(routes ...IPRoute) HandlerOption {
|
||||
}
|
||||
}
|
||||
|
||||
// ProxyAgentHandlerOption sets the proxy agent for http handler.
|
||||
func ProxyAgentHandlerOption(agent string) HandlerOption {
|
||||
return func(opts *HandlerOptions) {
|
||||
opts.ProxyAgent = agent
|
||||
}
|
||||
}
|
||||
|
||||
type autoHandler struct {
|
||||
options *HandlerOptions
|
||||
}
|
||||
|
9
http.go
9
http.go
@ -173,7 +173,12 @@ func (h *httpHandler) handleRequest(conn net.Conn, req *http.Request) {
|
||||
ProtoMinor: 1,
|
||||
Header: http.Header{},
|
||||
}
|
||||
resp.Header.Add("Proxy-Agent", "gost/"+Version)
|
||||
|
||||
proxyAgent := DefaultProxyAgent
|
||||
if h.options.ProxyAgent != "" {
|
||||
proxyAgent = h.options.ProxyAgent
|
||||
}
|
||||
resp.Header.Add("Proxy-Agent", proxyAgent)
|
||||
|
||||
if !Can("tcp", host, h.options.Whitelist, h.options.Blacklist) {
|
||||
log.Logf("[http] %s - %s : Unauthorized to tcp connect to %s",
|
||||
@ -287,7 +292,7 @@ func (h *httpHandler) handleRequest(conn net.Conn, req *http.Request) {
|
||||
|
||||
if req.Method == http.MethodConnect {
|
||||
b := []byte("HTTP/1.1 200 Connection established\r\n" +
|
||||
"Proxy-Agent: gost/" + Version + "\r\n\r\n")
|
||||
"Proxy-Agent: " + proxyAgent + "\r\n\r\n")
|
||||
if Debug {
|
||||
log.Logf("[http] %s <- %s\n%s", conn.RemoteAddr(), conn.LocalAddr(), string(b))
|
||||
}
|
||||
|
6
http2.go
6
http2.go
@ -365,7 +365,11 @@ func (h *http2Handler) roundTrip(w http.ResponseWriter, r *http.Request) {
|
||||
log.Logf("[http2] %s - %s\n%s", r.RemoteAddr, laddr, string(dump))
|
||||
}
|
||||
|
||||
w.Header().Set("Proxy-Agent", "gost/"+Version)
|
||||
proxyAgent := DefaultProxyAgent
|
||||
if h.options.ProxyAgent != "" {
|
||||
proxyAgent = h.options.ProxyAgent
|
||||
}
|
||||
w.Header().Set("Proxy-Agent", proxyAgent)
|
||||
|
||||
if !Can("tcp", host, h.options.Whitelist, h.options.Blacklist) {
|
||||
log.Logf("[http2] %s - %s : Unauthorized to tcp connect to %s",
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
|
||||
var (
|
||||
// ErrNoneAvailable indicates there is no node available.
|
||||
ErrNoneAvailable = errors.New("none available")
|
||||
ErrNoneAvailable = errors.New("none node available")
|
||||
)
|
||||
|
||||
// NodeSelector as a mechanism to pick nodes and mark their status.
|
||||
|
Loading…
Reference in New Issue
Block a user