forward non-HTTP traffic based on host

This commit is contained in:
ginuerzh
2023-01-30 21:09:21 +08:00
parent 3afa3b6860
commit 1c6bc9283e
11 changed files with 127 additions and 13 deletions

View File

@ -6,6 +6,7 @@ import (
"syscall"
limiter "github.com/go-gost/core/limiter/conn"
"github.com/go-gost/core/metadata"
)
var (
@ -41,3 +42,10 @@ func (c *serverConn) Close() error {
c.limiter.Allow(-1)
return c.Conn.Close()
}
func (c *serverConn) Metadata() metadata.Metadata {
if md, ok := c.Conn.(metadata.Metadatable); ok {
return md.Metadata()
}
return nil
}

View File

@ -10,6 +10,7 @@ import (
"time"
limiter "github.com/go-gost/core/limiter/traffic"
"github.com/go-gost/core/metadata"
xnet "github.com/go-gost/x/internal/net"
"github.com/go-gost/x/internal/net/udp"
"github.com/patrickmn/go-cache"
@ -118,6 +119,13 @@ func (c *serverConn) SyscallConn() (rc syscall.RawConn, err error) {
return
}
func (c *serverConn) Metadata() metadata.Metadata {
if md, ok := c.Conn.(metadata.Metadatable); ok {
return md.Metadata()
}
return nil
}
type packetConn struct {
net.PacketConn
limiter limiter.TrafficLimiter
@ -217,6 +225,13 @@ func (c *packetConn) WriteTo(p []byte, addr net.Addr) (n int, err error) {
return c.PacketConn.WriteTo(p, addr)
}
func (c *packetConn) Metadata() metadata.Metadata {
if md, ok := c.PacketConn.(metadata.Metadatable); ok {
return md.Metadata()
}
return nil
}
type udpConn struct {
net.PacketConn
limiter limiter.TrafficLimiter