mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
添加 listen和dial 自定义network的功能,closes #91
This commit is contained in:
@@ -7,12 +7,16 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
CustomDialerMap = make(map[string]func(address string, timeout time.Duration) (net.Conn, error))
|
||||
)
|
||||
|
||||
func (a *Addr) Dial() (net.Conn, error) {
|
||||
var istls bool
|
||||
var resultConn net.Conn
|
||||
var err error
|
||||
|
||||
switch a.Network {
|
||||
switch n := a.Network; n {
|
||||
case "":
|
||||
a.Network = "tcp"
|
||||
goto tcp
|
||||
@@ -30,6 +34,11 @@ func (a *Addr) Dial() (net.Conn, error) {
|
||||
|
||||
return DialUDP(ua)
|
||||
default:
|
||||
if len(CustomDialerMap) > 0 {
|
||||
if f := CustomDialerMap[n]; f != nil {
|
||||
return f(a.String(), time.Second*15)
|
||||
}
|
||||
}
|
||||
|
||||
goto defaultPart
|
||||
|
||||
|
||||
@@ -13,6 +13,10 @@ import (
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var (
|
||||
CustomListenerMap = make(map[string]func(address string) (net.Listener, error))
|
||||
)
|
||||
|
||||
func loopAccept(listener net.Listener, xver int, acceptFunc func(net.Conn)) {
|
||||
if xver > 0 {
|
||||
|
||||
@@ -147,6 +151,12 @@ func ListenAndAccept(network, addr string, sockopt *Sockopt, xver int, acceptFun
|
||||
fallthrough
|
||||
default:
|
||||
|
||||
if len(CustomListenerMap) > 0 {
|
||||
if f := CustomListenerMap[network]; f != nil {
|
||||
return f(addr)
|
||||
}
|
||||
}
|
||||
|
||||
listener, err = net.Listen(network, addr)
|
||||
if err != nil {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user