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/common/bufpool"
|
||||||
"github.com/go-gost/core/logger"
|
"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"
|
||||||
"github.com/lucas-clemente/quic-go/http3"
|
"github.com/lucas-clemente/quic-go/http3"
|
||||||
"github.com/rs/xid"
|
"github.com/rs/xid"
|
||||||
@ -143,7 +144,11 @@ func NewHTTP3Server(addr string, quicConfig *quic.Config, opts ...ServerOption)
|
|||||||
|
|
||||||
func (s *Server) ListenAndServe() error {
|
func (s *Server) ListenAndServe() error {
|
||||||
if s.http3Server != nil {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -152,7 +157,11 @@ func (s *Server) ListenAndServe() error {
|
|||||||
return s.http3Server.ListenAndServe()
|
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 {
|
if err != nil {
|
||||||
s.options.logger.Error(err)
|
s.options.logger.Error(err)
|
||||||
return err
|
return err
|
||||||
|
@ -8,6 +8,8 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Server interface {
|
type Server interface {
|
||||||
@ -22,7 +24,11 @@ type dohServer struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *dohServer) ListenAndServe() error {
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/xtaci/tcpraw"
|
"github.com/xtaci/tcpraw"
|
||||||
)
|
)
|
||||||
@ -40,7 +41,11 @@ func (l *ftcpListener) Init(md md.Metadata) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var conn net.PacketConn
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
pb "github.com/go-gost/x/internal/util/grpc/proto"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
@ -44,7 +45,11 @@ func (l *grpcListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
"golang.org/x/net/http2/h2c"
|
"golang.org/x/net/http2/h2c"
|
||||||
@ -65,7 +66,11 @@ func (l *h2Listener) Init(md md.Metadata) (err error) {
|
|||||||
Addr: l.options.Addr,
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
mdx "github.com/go-gost/x/metadata"
|
mdx "github.com/go-gost/x/metadata"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"golang.org/x/net/http2"
|
"golang.org/x/net/http2"
|
||||||
@ -54,7 +55,11 @@ func (l *http2Listener) Init(md md.Metadata) (err error) {
|
|||||||
return err
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
pht_util "github.com/go-gost/x/internal/util/pht"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/lucas-clemente/quic-go"
|
"github.com/lucas-clemente/quic-go"
|
||||||
@ -41,7 +42,11 @@ func (l *http3Listener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
kcp_util "github.com/go-gost/x/internal/util/kcp"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/xtaci/kcp-go/v5"
|
"github.com/xtaci/kcp-go/v5"
|
||||||
@ -51,14 +52,22 @@ func (l *kcpListener) Init(md md.Metadata) (err error) {
|
|||||||
|
|
||||||
var conn net.PacketConn
|
var conn net.PacketConn
|
||||||
if config.TCP {
|
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 {
|
} else {
|
||||||
|
network := "udp"
|
||||||
|
if xnet.IsIPv4(l.options.Addr) {
|
||||||
|
network = "udp4"
|
||||||
|
}
|
||||||
var udpAddr *net.UDPAddr
|
var udpAddr *net.UDPAddr
|
||||||
udpAddr, err = net.ResolveUDPAddr("udp", l.options.Addr)
|
udpAddr, err = net.ResolveUDPAddr(network, l.options.Addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
conn, err = net.ListenUDP("udp", udpAddr)
|
conn, err = net.ListenUDP(network, udpAddr)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/xtaci/smux"
|
"github.com/xtaci/smux"
|
||||||
)
|
)
|
||||||
@ -42,7 +43,11 @@ func (l *mtlsListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
ws_util "github.com/go-gost/x/internal/util/ws"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/gorilla/websocket"
|
"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.cqueue = make(chan net.Conn, l.md.backlog)
|
||||||
l.errChan = make(chan error, 1)
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,7 +39,11 @@ func (l *obfsListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,7 +39,11 @@ func (l *obfsListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
pht_util "github.com/go-gost/x/internal/util/pht"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
@ -55,7 +56,11 @@ func (l *phtListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
quic_util "github.com/go-gost/x/internal/util/quic"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/lucas-clemente/quic-go"
|
"github.com/lucas-clemente/quic-go"
|
||||||
@ -47,14 +48,18 @@ func (l *quicListener) Init(md md.Metadata) (err error) {
|
|||||||
addr = net.JoinHostPort(addr, "0")
|
addr = net.JoinHostPort(addr, "0")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
network := "udp"
|
||||||
|
if xnet.IsIPv4(l.options.Addr) {
|
||||||
|
network = "udp4"
|
||||||
|
}
|
||||||
var laddr *net.UDPAddr
|
var laddr *net.UDPAddr
|
||||||
laddr, err = net.ResolveUDPAddr("udp", addr)
|
laddr, err = net.ResolveUDPAddr(network, addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var conn net.PacketConn
|
var conn net.PacketConn
|
||||||
conn, err = net.ListenUDP("udp", laddr)
|
conn, err = net.ListenUDP(network, laddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,7 +45,11 @@ func (l *redirectListener) Init(md md.Metadata) (err error) {
|
|||||||
if l.md.tproxy {
|
if l.md.tproxy {
|
||||||
lc.Control = l.control
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/go-gost/core/common/bufpool"
|
"github.com/go-gost/core/common/bufpool"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"golang.org/x/sys/unix"
|
"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 {
|
if err != nil {
|
||||||
return nil, err
|
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())
|
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 {
|
if err != nil {
|
||||||
l.logger.Error(err)
|
l.logger.Error(err)
|
||||||
return
|
return
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -20,7 +21,6 @@ func init() {
|
|||||||
type rtcpListener struct {
|
type rtcpListener struct {
|
||||||
laddr net.Addr
|
laddr net.Addr
|
||||||
ln net.Listener
|
ln net.Listener
|
||||||
md metadata
|
|
||||||
router *chain.Router
|
router *chain.Router
|
||||||
logger logger.Logger
|
logger logger.Logger
|
||||||
closed chan struct{}
|
closed chan struct{}
|
||||||
@ -44,7 +44,11 @@ func (l *rtcpListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,7 +45,11 @@ func (l *rudpListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
ssh_util "github.com/go-gost/x/internal/util/ssh"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
@ -45,7 +46,11 @@ func (l *sshListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
ssh_util "github.com/go-gost/x/internal/util/ssh"
|
||||||
sshd_util "github.com/go-gost/x/internal/util/sshd"
|
sshd_util "github.com/go-gost/x/internal/util/sshd"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
@ -54,7 +55,11 @@ func (l *sshdListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
mdata "github.com/go-gost/core/metadata"
|
mdata "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
mdx "github.com/go-gost/x/metadata"
|
mdx "github.com/go-gost/x/metadata"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
@ -42,7 +43,11 @@ func (l *tapListener) Init(md mdata.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -37,7 +38,11 @@ func (l *tcpListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -39,7 +40,11 @@ func (l *tlsListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
mdata "github.com/go-gost/core/metadata"
|
mdata "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
mdx "github.com/go-gost/x/metadata"
|
mdx "github.com/go-gost/x/metadata"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
@ -40,7 +41,11 @@ func (l *tunListener) Init(md mdata.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
metrics "github.com/go-gost/core/metrics/wrapper"
|
||||||
|
xnet "github.com/go-gost/x/internal/net"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -38,13 +39,17 @@ func (l *udpListener) Init(md md.Metadata) (err error) {
|
|||||||
return
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var conn net.PacketConn
|
var conn net.PacketConn
|
||||||
conn, err = net.ListenUDP("udp", laddr)
|
conn, err = net.ListenUDP(network, laddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
"github.com/go-gost/core/logger"
|
"github.com/go-gost/core/logger"
|
||||||
md "github.com/go-gost/core/metadata"
|
md "github.com/go-gost/core/metadata"
|
||||||
metrics "github.com/go-gost/core/metrics/wrapper"
|
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"
|
ws_util "github.com/go-gost/x/internal/util/ws"
|
||||||
"github.com/go-gost/x/registry"
|
"github.com/go-gost/x/registry"
|
||||||
"github.com/gorilla/websocket"
|
"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.cqueue = make(chan net.Conn, l.md.backlog)
|
||||||
l.errChan = make(chan error, 1)
|
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 {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user