refactor: udp
This commit is contained in:
@ -2,7 +2,7 @@ package inbound
|
||||
|
||||
import (
|
||||
C "github.com/Dreamacro/clash/constant"
|
||||
"github.com/Dreamacro/clash/transport/socks5"
|
||||
M "github.com/sagernet/sing/common/metadata"
|
||||
)
|
||||
|
||||
// PacketAdapter is a UDP Packet adapter for socks/redir/tun
|
||||
@ -17,8 +17,8 @@ func (s *PacketAdapter) Metadata() *C.Metadata {
|
||||
}
|
||||
|
||||
// NewPacket is PacketAdapter generator
|
||||
func NewPacket(target socks5.Addr, packet C.UDPPacket, source C.Type) *PacketAdapter {
|
||||
metadata := parseSocksAddr(target)
|
||||
func NewPacket(target M.Socksaddr, packet C.UDPPacket, source C.Type) *PacketAdapter {
|
||||
metadata := socksAddrToMetadata(target)
|
||||
metadata.NetWork = C.UDP
|
||||
metadata.Type = source
|
||||
if ip, port, err := parseAddr(packet.LocalAddr().String()); err == nil {
|
||||
|
@ -10,8 +10,26 @@ import (
|
||||
"github.com/Dreamacro/clash/common/nnip"
|
||||
C "github.com/Dreamacro/clash/constant"
|
||||
"github.com/Dreamacro/clash/transport/socks5"
|
||||
M "github.com/sagernet/sing/common/metadata"
|
||||
)
|
||||
|
||||
func socksAddrToMetadata(addr M.Socksaddr) *C.Metadata {
|
||||
metadata := &C.Metadata{}
|
||||
switch addr.Family() {
|
||||
case M.AddressFamilyIPv4:
|
||||
metadata.AddrType = C.AtypIPv4
|
||||
metadata.DstIP = addr.Addr
|
||||
case M.AddressFamilyIPv6:
|
||||
metadata.AddrType = C.AtypIPv6
|
||||
metadata.DstIP = addr.Addr
|
||||
case M.AddressFamilyFqdn:
|
||||
metadata.AddrType = C.AtypDomainName
|
||||
metadata.Host = addr.Fqdn
|
||||
}
|
||||
metadata.DstPort = strconv.Itoa(int(addr.Port))
|
||||
return metadata
|
||||
}
|
||||
|
||||
func parseSocksAddr(target socks5.Addr) *C.Metadata {
|
||||
metadata := &C.Metadata{
|
||||
AddrType: int(target[0]),
|
||||
|
Reference in New Issue
Block a user