diff --git a/adapter/outbound/anytls.go b/adapter/outbound/anytls.go index c17f27d5..dbc86ff2 100644 --- a/adapter/outbound/anytls.go +++ b/adapter/outbound/anytls.go @@ -86,18 +86,18 @@ func (t *AnyTLS) Close() error { func NewAnyTLS(option AnyTLSOption) (*AnyTLS, error) { addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port)) outbound := &AnyTLS{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.AnyTLS, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.AnyTLS, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, } outbound.dialer = option.NewDialer(outbound.DialOptions()) diff --git a/adapter/outbound/base.go b/adapter/outbound/base.go index 4a4c412d..943e5361 100644 --- a/adapter/outbound/base.go +++ b/adapter/outbound/base.go @@ -16,6 +16,8 @@ import ( "github.com/metacubex/mihomo/component/resolver" C "github.com/metacubex/mihomo/constant" "github.com/metacubex/mihomo/log" + + "github.com/gofrs/uuid/v5" ) type ProxyAdapter interface { @@ -37,7 +39,38 @@ type Base struct { rmark int prefer C.DNSPrefer dialer C.Dialer - id string + id uuid.UUID +} + +type BaseOption struct { + Name string + Addr string + Type C.AdapterType + ProviderName string + UDP bool + XUDP bool + TFO bool + MPTCP bool + Interface string + RoutingMark int + Prefer C.DNSPrefer +} + +func NewBase(opt BaseOption) *Base { + return &Base{ + name: opt.Name, + addr: opt.Addr, + tp: opt.Type, + pdName: opt.ProviderName, + udp: opt.UDP, + xudp: opt.XUDP, + tfo: opt.TFO, + mpTcp: opt.MPTCP, + iface: opt.Interface, + rmark: opt.RoutingMark, + prefer: opt.Prefer, + id: utils.NewUUIDV6(), + } } // Name implements C.ProxyAdapter @@ -47,11 +80,7 @@ func (b *Base) Name() string { // Id implements C.ProxyAdapter func (b *Base) Id() string { - if b.id == "" { - b.id = utils.NewUUIDV6().String() - } - - return b.id + return b.id.String() } // Type implements C.ProxyAdapter @@ -188,34 +217,6 @@ func (b *BasicOption) NewDialer(opts []dialer.Option) C.Dialer { return cDialer } -type BaseOption struct { - Name string - Addr string - Type C.AdapterType - UDP bool - XUDP bool - TFO bool - MPTCP bool - Interface string - RoutingMark int - Prefer C.DNSPrefer -} - -func NewBase(opt BaseOption) *Base { - return &Base{ - name: opt.Name, - addr: opt.Addr, - tp: opt.Type, - udp: opt.UDP, - xudp: opt.XUDP, - tfo: opt.TFO, - mpTcp: opt.MPTCP, - iface: opt.Interface, - rmark: opt.RoutingMark, - prefer: opt.Prefer, - } -} - type conn struct { N.ExtendedConn chain C.Chain diff --git a/adapter/outbound/direct.go b/adapter/outbound/direct.go index 42cd8def..99eb96d8 100644 --- a/adapter/outbound/direct.go +++ b/adapter/outbound/direct.go @@ -66,41 +66,41 @@ func (d *Direct) IsL3Protocol(metadata *C.Metadata) bool { func NewDirectWithOption(option DirectOption) *Direct { return &Direct{ - Base: &Base{ - name: option.Name, - tp: C.Direct, - pdName: option.ProviderName, - udp: true, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Type: C.Direct, + ProviderName: option.ProviderName, + UDP: true, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), loopBack: loopback.NewDetector(), } } func NewDirect() *Direct { return &Direct{ - Base: &Base{ - name: "DIRECT", - tp: C.Direct, - udp: true, - prefer: C.DualStack, - }, + Base: NewBase(BaseOption{ + Name: "DIRECT", + Type: C.Direct, + UDP: true, + Prefer: C.DualStack, + }), loopBack: loopback.NewDetector(), } } func NewCompatible() *Direct { return &Direct{ - Base: &Base{ - name: "COMPATIBLE", - tp: C.Compatible, - udp: true, - prefer: C.DualStack, - }, + Base: NewBase(BaseOption{ + Name: "COMPATIBLE", + Type: C.Compatible, + UDP: true, + Prefer: C.DualStack, + }), loopBack: loopback.NewDetector(), } } diff --git a/adapter/outbound/dns.go b/adapter/outbound/dns.go index 5e253d2a..e3effe69 100644 --- a/adapter/outbound/dns.go +++ b/adapter/outbound/dns.go @@ -155,16 +155,16 @@ func (*dnsPacketConn) SetWriteDeadline(t time.Time) error { func NewDnsWithOption(option DnsOption) *Dns { return &Dns{ - Base: &Base{ - name: option.Name, - tp: C.Dns, - pdName: option.ProviderName, - udp: true, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Type: C.Dns, + ProviderName: option.ProviderName, + UDP: true, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), } } diff --git a/adapter/outbound/http.go b/adapter/outbound/http.go index 7f282a21..fe26c9c5 100644 --- a/adapter/outbound/http.go +++ b/adapter/outbound/http.go @@ -167,17 +167,17 @@ func NewHttp(option HttpOption) (*Http, error) { } outbound := &Http{ - Base: &Base{ - name: option.Name, - addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), - tp: C.Http, - pdName: option.ProviderName, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), + Type: C.Http, + ProviderName: option.ProviderName, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), user: option.UserName, pass: option.Password, tlsConfig: tlsConfig, diff --git a/adapter/outbound/hysteria.go b/adapter/outbound/hysteria.go index 94c0c2e0..bbd117bd 100644 --- a/adapter/outbound/hysteria.go +++ b/adapter/outbound/hysteria.go @@ -239,17 +239,17 @@ func NewHysteria(option HysteriaOption) (*Hysteria, error) { return nil, fmt.Errorf("hysteria %s create error: %w", addr, err) } outbound := &Hysteria{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Hysteria, - pdName: option.ProviderName, - udp: true, - tfo: option.FastOpen, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Hysteria, + ProviderName: option.ProviderName, + UDP: true, + TFO: option.FastOpen, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, client: client, tlsConfig: tlsClientConfig, diff --git a/adapter/outbound/hysteria2.go b/adapter/outbound/hysteria2.go index e3ca1585..fdfb9029 100644 --- a/adapter/outbound/hysteria2.go +++ b/adapter/outbound/hysteria2.go @@ -105,16 +105,16 @@ func (h *Hysteria2) ProxyInfo() C.ProxyInfo { func NewHysteria2(option Hysteria2Option) (*Hysteria2, error) { addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port)) outbound := &Hysteria2{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Hysteria2, - pdName: option.ProviderName, - udp: true, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Hysteria2, + ProviderName: option.ProviderName, + UDP: true, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, } outbound.dialer = option.NewDialer(outbound.DialOptions()) diff --git a/adapter/outbound/masque.go b/adapter/outbound/masque.go index 613c08f5..8018aa88 100644 --- a/adapter/outbound/masque.go +++ b/adapter/outbound/masque.go @@ -104,16 +104,16 @@ func (option MasqueOption) Prefixes() ([]netip.Prefix, error) { func NewMasque(option MasqueOption) (*Masque, error) { outbound := &Masque{ - Base: &Base{ - name: option.Name, - addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), - tp: C.Masque, - pdName: option.ProviderName, - udp: option.UDP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), + Type: C.Masque, + ProviderName: option.ProviderName, + UDP: option.UDP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), } outbound.dialer = option.NewDialer(outbound.DialOptions()) diff --git a/adapter/outbound/mieru.go b/adapter/outbound/mieru.go index a70a042b..d518ce67 100644 --- a/adapter/outbound/mieru.go +++ b/adapter/outbound/mieru.go @@ -166,17 +166,18 @@ func NewMieru(option MieruOption) (*Mieru, error) { addr = net.JoinHostPort(option.Server, strconv.Itoa(beginPort)) } outbound := &Mieru{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Mieru, - pdName: option.ProviderName, - udp: option.UDP, - xudp: false, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Mieru, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, client: c, } diff --git a/adapter/outbound/reject.go b/adapter/outbound/reject.go index 97bcdd5a..66cdf12f 100644 --- a/adapter/outbound/reject.go +++ b/adapter/outbound/reject.go @@ -46,33 +46,33 @@ func (r *Reject) ResolveUDP(ctx context.Context, metadata *C.Metadata) error { func NewRejectWithOption(option RejectOption) *Reject { return &Reject{ - Base: &Base{ - name: option.Name, - tp: C.Reject, - udp: true, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Type: C.Reject, + UDP: true, + }), } } func NewReject() *Reject { return &Reject{ - Base: &Base{ - name: "REJECT", - tp: C.Reject, - udp: true, - prefer: C.DualStack, - }, + Base: NewBase(BaseOption{ + Name: "REJECT", + Type: C.Reject, + UDP: true, + Prefer: C.DualStack, + }), } } func NewRejectDrop() *Reject { return &Reject{ - Base: &Base{ - name: "REJECT-DROP", - tp: C.RejectDrop, - udp: true, - prefer: C.DualStack, - }, + Base: NewBase(BaseOption{ + Name: "REJECT-DROP", + Type: C.RejectDrop, + UDP: true, + Prefer: C.DualStack, + }), drop: true, } } diff --git a/adapter/outbound/shadowsocks.go b/adapter/outbound/shadowsocks.go index f1534c5b..333d288f 100644 --- a/adapter/outbound/shadowsocks.go +++ b/adapter/outbound/shadowsocks.go @@ -446,18 +446,18 @@ func NewShadowSocks(option ShadowSocksOption) (*ShadowSocks, error) { } outbound := &ShadowSocks{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Shadowsocks, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Shadowsocks, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), method: method, option: &option, diff --git a/adapter/outbound/shadowsocksr.go b/adapter/outbound/shadowsocksr.go index 09c3924e..91ed22fd 100644 --- a/adapter/outbound/shadowsocksr.go +++ b/adapter/outbound/shadowsocksr.go @@ -158,18 +158,18 @@ func NewShadowSocksR(option ShadowSocksROption) (*ShadowSocksR, error) { } outbound := &ShadowSocksR{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.ShadowsocksR, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.ShadowsocksR, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, cipher: coreCiph, obfs: obfs, diff --git a/adapter/outbound/snell.go b/adapter/outbound/snell.go index 64295a70..f14bd503 100644 --- a/adapter/outbound/snell.go +++ b/adapter/outbound/snell.go @@ -161,18 +161,18 @@ func NewSnell(option SnellOption) (*Snell, error) { } s := &Snell{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Snell, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Snell, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, psk: psk, obfsOption: obfsOption, diff --git a/adapter/outbound/socks5.go b/adapter/outbound/socks5.go index f27f6de8..514223b9 100644 --- a/adapter/outbound/socks5.go +++ b/adapter/outbound/socks5.go @@ -187,18 +187,18 @@ func NewSocks5(option Socks5Option) (*Socks5, error) { } outbound := &Socks5{ - Base: &Base{ - name: option.Name, - addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), - tp: C.Socks5, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), + Type: C.Socks5, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, user: option.UserName, pass: option.Password, diff --git a/adapter/outbound/ssh.go b/adapter/outbound/ssh.go index 5dca2b17..dfd9f6b2 100644 --- a/adapter/outbound/ssh.go +++ b/adapter/outbound/ssh.go @@ -182,16 +182,18 @@ func NewSsh(option SshOption) (*Ssh, error) { config.ClientVersion = version outbound := &Ssh{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Ssh, - pdName: option.ProviderName, - udp: false, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Ssh, + ProviderName: option.ProviderName, + UDP: false, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, config: &config, } diff --git a/adapter/outbound/sudoku.go b/adapter/outbound/sudoku.go index 8d81342d..c6e63263 100644 --- a/adapter/outbound/sudoku.go +++ b/adapter/outbound/sudoku.go @@ -223,18 +223,18 @@ func NewSudoku(option SudokuOption) (*Sudoku, error) { } outbound := &Sudoku{ - Base: &Base{ - name: option.Name, - addr: baseConf.ServerAddress, - tp: C.Sudoku, - pdName: option.ProviderName, - udp: true, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: baseConf.ServerAddress, + Type: C.Sudoku, + ProviderName: option.ProviderName, + UDP: true, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, baseConf: baseConf, } diff --git a/adapter/outbound/trojan.go b/adapter/outbound/trojan.go index fc3a6f82..1dd1588b 100644 --- a/adapter/outbound/trojan.go +++ b/adapter/outbound/trojan.go @@ -253,18 +253,18 @@ func NewTrojan(option TrojanOption) (*Trojan, error) { } t := &Trojan{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Trojan, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Trojan, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, hexPassword: trojan.Key(option.Password), } diff --git a/adapter/outbound/trusttunnel.go b/adapter/outbound/trusttunnel.go index ff2ad26e..c95ce6c5 100644 --- a/adapter/outbound/trusttunnel.go +++ b/adapter/outbound/trusttunnel.go @@ -85,18 +85,18 @@ func (t *TrustTunnel) Close() error { func NewTrustTunnel(option TrustTunnelOption) (*TrustTunnel, error) { addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port)) outbound := &TrustTunnel{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.TrustTunnel, - pdName: option.ProviderName, - udp: option.UDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.TrustTunnel, + ProviderName: option.ProviderName, + UDP: option.UDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, } outbound.dialer = option.NewDialer(outbound.DialOptions()) diff --git a/adapter/outbound/tuic.go b/adapter/outbound/tuic.go index 6e1700d0..96d842ee 100644 --- a/adapter/outbound/tuic.go +++ b/adapter/outbound/tuic.go @@ -236,17 +236,17 @@ func NewTuic(option TuicOption) (*Tuic, error) { } t := &Tuic{ - Base: &Base{ - name: option.Name, - addr: addr, - tp: C.Tuic, - pdName: option.ProviderName, - udp: true, - tfo: option.FastOpen, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: addr, + Type: C.Tuic, + ProviderName: option.ProviderName, + UDP: true, + TFO: option.FastOpen, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), option: &option, quicConfig: quicConfig, tlsConfig: tlsConfig, diff --git a/adapter/outbound/vless.go b/adapter/outbound/vless.go index 2f15d092..85800b49 100644 --- a/adapter/outbound/vless.go +++ b/adapter/outbound/vless.go @@ -436,19 +436,19 @@ func NewVless(option VlessOption) (*Vless, error) { } v := &Vless{ - Base: &Base{ - name: option.Name, - addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), - tp: C.Vless, - pdName: option.ProviderName, - udp: option.UDP, - xudp: option.XUDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), + Type: C.Vless, + ProviderName: option.ProviderName, + UDP: option.UDP, + XUDP: option.XUDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), client: client, option: &option, } diff --git a/adapter/outbound/vmess.go b/adapter/outbound/vmess.go index c2237986..d92a02bd 100644 --- a/adapter/outbound/vmess.go +++ b/adapter/outbound/vmess.go @@ -374,19 +374,19 @@ func NewVmess(option VmessOption) (*Vmess, error) { } v := &Vmess{ - Base: &Base{ - name: option.Name, - addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), - tp: C.Vmess, - pdName: option.ProviderName, - udp: option.UDP, - xudp: option.XUDP, - tfo: option.TFO, - mpTcp: option.MPTCP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), + Type: C.Vmess, + ProviderName: option.ProviderName, + UDP: option.UDP, + XUDP: option.XUDP, + TFO: option.TFO, + MPTCP: option.MPTCP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), client: client, option: &option, } diff --git a/adapter/outbound/wireguard.go b/adapter/outbound/wireguard.go index a26ecea0..66864d53 100644 --- a/adapter/outbound/wireguard.go +++ b/adapter/outbound/wireguard.go @@ -166,16 +166,16 @@ func (option WireGuardOption) Prefixes() ([]netip.Prefix, error) { func NewWireGuard(option WireGuardOption) (*WireGuard, error) { outbound := &WireGuard{ - Base: &Base{ - name: option.Name, - addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), - tp: C.WireGuard, - pdName: option.ProviderName, - udp: option.UDP, - iface: option.Interface, - rmark: option.RoutingMark, - prefer: option.IPVersion, - }, + Base: NewBase(BaseOption{ + Name: option.Name, + Addr: net.JoinHostPort(option.Server, strconv.Itoa(option.Port)), + Type: C.WireGuard, + ProviderName: option.ProviderName, + UDP: option.UDP, + Interface: option.Interface, + RoutingMark: option.RoutingMark, + Prefer: option.IPVersion, + }), } outbound.dialer = option.NewDialer(outbound.DialOptions()) singDialer := proxydialer.NewSingDialer(proxydialer.NewSlowDownDialer(outbound.dialer, slowdown.New()))