add ipv4-only support for listener
This commit is contained in:
parent
00bf0c87b4
commit
f7be171df5
5
internal/net/net.go
Normal file
5
internal/net/net.go
Normal file
@ -0,0 +1,5 @@
|
||||
package net
|
||||
|
||||
func IsIPv4(address string) bool {
|
||||
return address != "" && address[0] != ':' && address[0] != '['
|
||||
}
|
@ -16,6 +16,7 @@ import (
|
||||
|
||||
"github.com/go-gost/core/common/bufpool"
|
||||
"github.com/go-gost/core/logger"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/lucas-clemente/quic-go"
|
||||
"github.com/lucas-clemente/quic-go/http3"
|
||||
"github.com/rs/xid"
|
||||
@ -143,7 +144,11 @@ func NewHTTP3Server(addr string, quicConfig *quic.Config, opts ...ServerOption)
|
||||
|
||||
func (s *Server) ListenAndServe() error {
|
||||
if s.http3Server != nil {
|
||||
addr, err := net.ResolveUDPAddr("udp", s.http3Server.Addr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(s.httpServer.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
addr, err := net.ResolveUDPAddr(network, s.http3Server.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -152,7 +157,11 @@ func (s *Server) ListenAndServe() error {
|
||||
return s.http3Server.ListenAndServe()
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", s.httpServer.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(s.httpServer.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, s.httpServer.Addr)
|
||||
if err != nil {
|
||||
s.options.logger.Error(err)
|
||||
return err
|
||||
|
@ -8,6 +8,8 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
)
|
||||
|
||||
type Server interface {
|
||||
@ -22,7 +24,11 @@ type dohServer struct {
|
||||
}
|
||||
|
||||
func (s *dohServer) ListenAndServe() error {
|
||||
ln, err := net.Listen("tcp", s.addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(s.addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, s.addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/xtaci/tcpraw"
|
||||
)
|
||||
@ -40,7 +41,11 @@ func (l *ftcpListener) Init(md md.Metadata) (err error) {
|
||||
}
|
||||
|
||||
var conn net.PacketConn
|
||||
conn, err = tcpraw.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
conn, err = tcpraw.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
pb "github.com/go-gost/x/internal/util/grpc/proto"
|
||||
"github.com/go-gost/x/registry"
|
||||
"google.golang.org/grpc"
|
||||
@ -44,7 +45,11 @@ func (l *grpcListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
"golang.org/x/net/http2"
|
||||
"golang.org/x/net/http2/h2c"
|
||||
@ -65,7 +66,11 @@ func (l *h2Listener) Init(md md.Metadata) (err error) {
|
||||
Addr: l.options.Addr,
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
mdx "github.com/go-gost/x/metadata"
|
||||
"github.com/go-gost/x/registry"
|
||||
"golang.org/x/net/http2"
|
||||
@ -54,7 +55,11 @@ func (l *http2Listener) Init(md md.Metadata) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
pht_util "github.com/go-gost/x/internal/util/pht"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/lucas-clemente/quic-go"
|
||||
@ -41,7 +42,11 @@ func (l *http3Listener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
l.addr, err = net.ResolveUDPAddr("udp", l.options.Addr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
l.addr, err = net.ResolveUDPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
kcp_util "github.com/go-gost/x/internal/util/kcp"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/xtaci/kcp-go/v5"
|
||||
@ -51,14 +52,22 @@ func (l *kcpListener) Init(md md.Metadata) (err error) {
|
||||
|
||||
var conn net.PacketConn
|
||||
if config.TCP {
|
||||
conn, err = tcpraw.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
conn, err = tcpraw.Listen(network, l.options.Addr)
|
||||
} else {
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
var udpAddr *net.UDPAddr
|
||||
udpAddr, err = net.ResolveUDPAddr("udp", l.options.Addr)
|
||||
udpAddr, err = net.ResolveUDPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
conn, err = net.ListenUDP("udp", udpAddr)
|
||||
conn, err = net.ListenUDP(network, udpAddr)
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/xtaci/smux"
|
||||
)
|
||||
@ -42,7 +43,11 @@ func (l *mtlsListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
ws_util "github.com/go-gost/x/internal/util/ws"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/gorilla/websocket"
|
||||
@ -85,7 +86,11 @@ func (l *mwsListener) Init(md md.Metadata) (err error) {
|
||||
l.cqueue = make(chan net.Conn, l.md.backlog)
|
||||
l.errChan = make(chan error, 1)
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -38,7 +39,11 @@ func (l *obfsListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -38,7 +39,11 @@ func (l *obfsListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
pht_util "github.com/go-gost/x/internal/util/pht"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
@ -55,7 +56,11 @@ func (l *phtListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
l.addr, err = net.ResolveTCPAddr("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
l.addr, err = net.ResolveTCPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
quic_util "github.com/go-gost/x/internal/util/quic"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/lucas-clemente/quic-go"
|
||||
@ -47,14 +48,18 @@ func (l *quicListener) Init(md md.Metadata) (err error) {
|
||||
addr = net.JoinHostPort(addr, "0")
|
||||
}
|
||||
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
var laddr *net.UDPAddr
|
||||
laddr, err = net.ResolveUDPAddr("udp", addr)
|
||||
laddr, err = net.ResolveUDPAddr(network, addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var conn net.PacketConn
|
||||
conn, err = net.ListenUDP("udp", laddr)
|
||||
conn, err = net.ListenUDP(network, laddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -44,7 +45,11 @@ func (l *redirectListener) Init(md md.Metadata) (err error) {
|
||||
if l.md.tproxy {
|
||||
lc.Control = l.control
|
||||
}
|
||||
ln, err := lc.Listen(context.Background(), "tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := lc.Listen(context.Background(), network, l.options.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"unsafe"
|
||||
|
||||
"github.com/go-gost/core/common/bufpool"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
@ -28,7 +29,12 @@ func (l *redirectListener) listenUDP(addr string) (*net.UDPConn, error) {
|
||||
})
|
||||
},
|
||||
}
|
||||
pc, err := lc.ListenPacket(context.Background(), "udp", addr)
|
||||
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
pc, err := lc.ListenPacket(context.Background(), network, addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -47,7 +53,11 @@ func (l *redirectListener) accept() (conn net.Conn, err error) {
|
||||
|
||||
l.logger.Infof("%s >> %s", raddr.String(), dstAddr.String())
|
||||
|
||||
c, err := dialUDP("udp", dstAddr, raddr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
c, err := dialUDP(network, dstAddr, raddr)
|
||||
if err != nil {
|
||||
l.logger.Error(err)
|
||||
return
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -20,7 +21,6 @@ func init() {
|
||||
type rtcpListener struct {
|
||||
laddr net.Addr
|
||||
ln net.Listener
|
||||
md metadata
|
||||
router *chain.Router
|
||||
logger logger.Logger
|
||||
closed chan struct{}
|
||||
@ -44,7 +44,11 @@ func (l *rtcpListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveTCPAddr("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
laddr, err := net.ResolveTCPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -44,7 +45,11 @@ func (l *rudpListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveUDPAddr("udp", l.options.Addr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
laddr, err := net.ResolveUDPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
ssh_util "github.com/go-gost/x/internal/util/ssh"
|
||||
"github.com/go-gost/x/registry"
|
||||
"golang.org/x/crypto/ssh"
|
||||
@ -45,7 +46,11 @@ func (l *sshListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
ssh_util "github.com/go-gost/x/internal/util/ssh"
|
||||
sshd_util "github.com/go-gost/x/internal/util/sshd"
|
||||
"github.com/go-gost/x/registry"
|
||||
@ -54,7 +55,11 @@ func (l *sshdListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
mdata "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
mdx "github.com/go-gost/x/metadata"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
@ -42,7 +43,11 @@ func (l *tapListener) Init(md mdata.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
l.addr, err = net.ResolveUDPAddr("udp", l.saddr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
l.addr, err = net.ResolveUDPAddr(network, l.saddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -37,7 +38,11 @@ func (l *tcpListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -39,7 +40,11 @@ func (l *tlsListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
mdata "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
mdx "github.com/go-gost/x/metadata"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
@ -40,7 +41,11 @@ func (l *tunListener) Init(md mdata.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
l.addr, err = net.ResolveUDPAddr("udp", l.options.Addr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
l.addr, err = net.ResolveUDPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
"github.com/go-gost/x/registry"
|
||||
)
|
||||
|
||||
@ -38,13 +39,17 @@ func (l *udpListener) Init(md md.Metadata) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
laddr, err := net.ResolveUDPAddr("udp", l.options.Addr)
|
||||
network := "udp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "udp4"
|
||||
}
|
||||
laddr, err := net.ResolveUDPAddr(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var conn net.PacketConn
|
||||
conn, err = net.ListenUDP("udp", laddr)
|
||||
conn, err = net.ListenUDP(network, laddr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"github.com/go-gost/core/logger"
|
||||
md "github.com/go-gost/core/metadata"
|
||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||
xnet "github.com/go-gost/x/internal/net"
|
||||
ws_util "github.com/go-gost/x/internal/util/ws"
|
||||
"github.com/go-gost/x/registry"
|
||||
"github.com/gorilla/websocket"
|
||||
@ -80,7 +81,11 @@ func (l *wsListener) Init(md md.Metadata) (err error) {
|
||||
l.cqueue = make(chan net.Conn, l.md.backlog)
|
||||
l.errChan = make(chan error, 1)
|
||||
|
||||
ln, err := net.Listen("tcp", l.options.Addr)
|
||||
network := "tcp"
|
||||
if xnet.IsIPv4(l.options.Addr) {
|
||||
network = "tcp4"
|
||||
}
|
||||
ln, err := net.Listen(network, l.options.Addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user