Update: avoid implicit params
This commit is contained in:
parent
1a56a878ac
commit
017136707a
@ -182,6 +182,8 @@ func parseChainNode(ns string) (nodes []gost.Node, err error) {
|
|||||||
tr = gost.WSSTransporter(wsOpts)
|
tr = gost.WSSTransporter(wsOpts)
|
||||||
case "mwss":
|
case "mwss":
|
||||||
tr = gost.MWSSTransporter(wsOpts)
|
tr = gost.MWSSTransporter(wsOpts)
|
||||||
|
case "mtws":
|
||||||
|
tr = gost.MTWSTransporter(wsOpts)
|
||||||
case "kcp":
|
case "kcp":
|
||||||
config, err := parseKCPConfig(node.Get("c"))
|
config, err := parseKCPConfig(node.Get("c"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -231,8 +233,10 @@ func parseChainNode(ns string) (nodes []gost.Node, err error) {
|
|||||||
tr = gost.FakeTCPTransporter()
|
tr = gost.FakeTCPTransporter()
|
||||||
case "udp":
|
case "udp":
|
||||||
tr = gost.UDPTransporter()
|
tr = gost.UDPTransporter()
|
||||||
default:
|
case "tcp":
|
||||||
tr = gost.TCPTransporter()
|
tr = gost.TCPTransporter()
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unknown transport: %s", node.Transport)
|
||||||
}
|
}
|
||||||
|
|
||||||
var connector gost.Connector
|
var connector gost.Connector
|
||||||
@ -261,8 +265,10 @@ func parseChainNode(ns string) (nodes []gost.Node, err error) {
|
|||||||
connector = gost.HTTPConnector(node.User)
|
connector = gost.HTTPConnector(node.User)
|
||||||
case "relay":
|
case "relay":
|
||||||
connector = gost.RelayConnector(node.User)
|
connector = gost.RelayConnector(node.User)
|
||||||
default:
|
case "auto":
|
||||||
connector = gost.AutoConnector(node.User)
|
connector = gost.AutoConnector(node.User)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unknown connector: %s", node.Protocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
host := node.Get("host")
|
host := node.Get("host")
|
||||||
@ -546,7 +552,7 @@ func (r *route) GenRouters() ([]router, error) {
|
|||||||
QueueSize: node.GetInt("queue"),
|
QueueSize: node.GetInt("queue"),
|
||||||
})
|
})
|
||||||
default:
|
default:
|
||||||
ln, err = gost.TCPListener(node.Addr)
|
return nil, fmt.Errorf("unknown transport:%s", node.Transport)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -590,13 +596,10 @@ func (r *route) GenRouters() ([]router, error) {
|
|||||||
handler = gost.DNSHandler(node.Remote)
|
handler = gost.DNSHandler(node.Remote)
|
||||||
case "relay":
|
case "relay":
|
||||||
handler = gost.RelayHandler(node.Remote)
|
handler = gost.RelayHandler(node.Remote)
|
||||||
|
case "auto":
|
||||||
|
handler = gost.AutoHandler()
|
||||||
default:
|
default:
|
||||||
// start from 2.5, if remote is not empty, then we assume that it is a forward tunnel.
|
return nil, fmt.Errorf("unknown protocol:%s", node.Protocol)
|
||||||
if node.Remote != "" {
|
|
||||||
handler = gost.TCPDirectForwardHandler(node.Remote)
|
|
||||||
} else {
|
|
||||||
handler = gost.AutoHandler()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var whitelist, blacklist *gost.Permissions
|
var whitelist, blacklist *gost.Permissions
|
||||||
|
22
node.go
22
node.go
@ -67,19 +67,21 @@ func ParseNode(s string) (node Node, err error) {
|
|||||||
schemes := strings.Split(u.Scheme, "+")
|
schemes := strings.Split(u.Scheme, "+")
|
||||||
if len(schemes) == 1 {
|
if len(schemes) == 1 {
|
||||||
node.Protocol = schemes[0]
|
node.Protocol = schemes[0]
|
||||||
node.Transport = schemes[0]
|
|
||||||
}
|
}
|
||||||
if len(schemes) == 2 {
|
if len(schemes) == 2 {
|
||||||
node.Protocol = schemes[0]
|
node.Protocol = schemes[0]
|
||||||
node.Transport = schemes[1]
|
node.Transport = schemes[1]
|
||||||
}
|
}
|
||||||
|
if len(schemes) > 2 {
|
||||||
|
return node, fmt.Errorf("unknown scheme:%s", u.Scheme)
|
||||||
|
}
|
||||||
|
|
||||||
switch node.Transport {
|
switch node.Transport {
|
||||||
case "https":
|
case "https":
|
||||||
node.Transport = "tls"
|
node.Transport = "tls"
|
||||||
case "tls", "mtls":
|
case "tls", "mtls":
|
||||||
case "http2", "h2", "h2c":
|
case "http2", "h2", "h2c":
|
||||||
case "ws", "mws", "wss", "mwss":
|
case "ws", "mws", "wss", "mwss", "mtws":
|
||||||
case "kcp", "ssh", "quic":
|
case "kcp", "ssh", "quic":
|
||||||
case "ssu":
|
case "ssu":
|
||||||
node.Transport = "udp"
|
node.Transport = "udp"
|
||||||
@ -90,8 +92,10 @@ func ParseNode(s string) (node Node, err error) {
|
|||||||
case "ftcp": // fake TCP
|
case "ftcp": // fake TCP
|
||||||
case "dns":
|
case "dns":
|
||||||
case "redu", "redirectu": // UDP tproxy
|
case "redu", "redirectu": // UDP tproxy
|
||||||
default:
|
case "":
|
||||||
node.Transport = "tcp"
|
node.Transport = "tcp"
|
||||||
|
default:
|
||||||
|
return Node{}, fmt.Errorf("unknown transport:%s", node.Transport)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch node.Protocol {
|
switch node.Protocol {
|
||||||
@ -112,8 +116,11 @@ func ParseNode(s string) (node Node, err error) {
|
|||||||
case "ftcp": // fake TCP
|
case "ftcp": // fake TCP
|
||||||
case "dns", "dot", "doh":
|
case "dns", "dot", "doh":
|
||||||
case "relay":
|
case "relay":
|
||||||
|
case "":
|
||||||
|
case "auto":
|
||||||
|
node.Protocol = "auto"
|
||||||
default:
|
default:
|
||||||
node.Protocol = ""
|
return Node{}, fmt.Errorf("unknown protocol:%s", node.Protocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -172,12 +179,7 @@ func (node *Node) GetDuration(key string) time.Duration {
|
|||||||
|
|
||||||
func (node Node) String() string {
|
func (node Node) String() string {
|
||||||
var scheme string
|
var scheme string
|
||||||
if node.url != nil {
|
scheme = fmt.Sprintf("%s+%s", node.Protocol, node.Transport)
|
||||||
scheme = node.url.Scheme
|
|
||||||
}
|
|
||||||
if scheme == "" {
|
|
||||||
scheme = fmt.Sprintf("%s+%s", node.Protocol, node.Transport)
|
|
||||||
}
|
|
||||||
return fmt.Sprintf("%s://%s",
|
return fmt.Sprintf("%s://%s",
|
||||||
scheme, node.Addr)
|
scheme, node.Addr)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user