Skip to content

Commit 7e7016b

Browse files
committed
chore: removed routing-mark and interface-name of the group, please set it directly on the proxy instead
1 parent b4fe669 commit 7e7016b

34 files changed

+232
-286
lines changed

adapter/adapter.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"github.com/metacubex/mihomo/common/queue"
1818
"github.com/metacubex/mihomo/common/utils"
1919
"github.com/metacubex/mihomo/component/ca"
20-
"github.com/metacubex/mihomo/component/dialer"
2120
C "github.com/metacubex/mihomo/constant"
2221
"github.com/metacubex/mihomo/log"
2322
"github.com/puzpuzpuz/xsync/v3"
@@ -63,8 +62,8 @@ func (p *Proxy) Dial(metadata *C.Metadata) (C.Conn, error) {
6362
}
6463

6564
// DialContext implements C.ProxyAdapter
66-
func (p *Proxy) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
67-
conn, err := p.ProxyAdapter.DialContext(ctx, metadata, opts...)
65+
func (p *Proxy) DialContext(ctx context.Context, metadata *C.Metadata) (C.Conn, error) {
66+
conn, err := p.ProxyAdapter.DialContext(ctx, metadata)
6867
return conn, err
6968
}
7069

@@ -76,8 +75,8 @@ func (p *Proxy) DialUDP(metadata *C.Metadata) (C.PacketConn, error) {
7675
}
7776

7877
// ListenPacketContext implements C.ProxyAdapter
79-
func (p *Proxy) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
80-
pc, err := p.ProxyAdapter.ListenPacketContext(ctx, metadata, opts...)
78+
func (p *Proxy) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (C.PacketConn, error) {
79+
pc, err := p.ProxyAdapter.ListenPacketContext(ctx, metadata)
8180
return pc, err
8281
}
8382

adapter/outbound/anytls.go

+20-23
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,16 @@ type AnyTLSOption struct {
4343
MinIdleSession int `proxy:"min-idle-session,omitempty"`
4444
}
4545

46-
func (t *AnyTLS) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
47-
options := t.Base.DialOptions(opts...)
48-
t.dialer.SetDialer(dialer.NewDialer(options...))
46+
func (t *AnyTLS) DialContext(ctx context.Context, metadata *C.Metadata) (_ C.Conn, err error) {
4947
c, err := t.client.CreateProxy(ctx, M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
5048
if err != nil {
5149
return nil, err
5250
}
5351
return NewConn(c, t), nil
5452
}
5553

56-
func (t *AnyTLS) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
54+
func (t *AnyTLS) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (_ C.PacketConn, err error) {
5755
// create tcp
58-
options := t.Base.DialOptions(opts...)
59-
t.dialer.SetDialer(dialer.NewDialer(options...))
6056
c, err := t.client.CreateProxy(ctx, uot.RequestDestination(2))
6157
if err != nil {
6258
return nil, err
@@ -93,8 +89,23 @@ func (t *AnyTLS) Close() error {
9389

9490
func NewAnyTLS(option AnyTLSOption) (*AnyTLS, error) {
9591
addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
92+
outbound := &AnyTLS{
93+
Base: &Base{
94+
name: option.Name,
95+
addr: addr,
96+
tp: C.AnyTLS,
97+
udp: option.UDP,
98+
tfo: option.TFO,
99+
mpTcp: option.MPTCP,
100+
iface: option.Interface,
101+
rmark: option.RoutingMark,
102+
prefer: C.NewDNSPrefer(option.IPVersion),
103+
},
104+
option: &option,
105+
}
96106

97-
singDialer := proxydialer.NewByNameSingDialer(option.DialerProxy, dialer.NewDialer())
107+
singDialer := proxydialer.NewByNameSingDialer(option.DialerProxy, dialer.NewDialer(outbound.DialOptions()...))
108+
outbound.dialer = singDialer
98109

99110
tOption := anytls.ClientConfig{
100111
Password: option.Password,
@@ -116,22 +127,8 @@ func NewAnyTLS(option AnyTLSOption) (*AnyTLS, error) {
116127
}
117128
tOption.TLSConfig = tlsConfig
118129

119-
outbound := &AnyTLS{
120-
Base: &Base{
121-
name: option.Name,
122-
addr: addr,
123-
tp: C.AnyTLS,
124-
udp: option.UDP,
125-
tfo: option.TFO,
126-
mpTcp: option.MPTCP,
127-
iface: option.Interface,
128-
rmark: option.RoutingMark,
129-
prefer: C.NewDNSPrefer(option.IPVersion),
130-
},
131-
client: anytls.NewClient(context.TODO(), tOption),
132-
option: &option,
133-
dialer: singDialer,
134-
}
130+
client := anytls.NewClient(context.TODO(), tOption)
131+
outbound.client = client
135132

136133
return outbound, nil
137134
}

adapter/outbound/base.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818

1919
type ProxyAdapter interface {
2020
C.ProxyAdapter
21-
DialOptions(opts ...dialer.Option) []dialer.Option
21+
DialOptions() []dialer.Option
2222
}
2323

2424
type Base struct {
@@ -59,7 +59,7 @@ func (b *Base) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Me
5959
return c, C.ErrNotSupport
6060
}
6161

62-
func (b *Base) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
62+
func (b *Base) DialContext(ctx context.Context, metadata *C.Metadata) (C.Conn, error) {
6363
return nil, C.ErrNotSupport
6464
}
6565

@@ -69,7 +69,7 @@ func (b *Base) DialContextWithDialer(ctx context.Context, dialer C.Dialer, metad
6969
}
7070

7171
// ListenPacketContext implements C.ProxyAdapter
72-
func (b *Base) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
72+
func (b *Base) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (C.PacketConn, error) {
7373
return nil, C.ErrNotSupport
7474
}
7575

@@ -128,7 +128,7 @@ func (b *Base) Unwrap(metadata *C.Metadata, touch bool) C.Proxy {
128128
}
129129

130130
// DialOptions return []dialer.Option from struct
131-
func (b *Base) DialOptions(opts ...dialer.Option) []dialer.Option {
131+
func (b *Base) DialOptions() (opts []dialer.Option) {
132132
if b.iface != "" {
133133
opts = append(opts, dialer.WithInterface(b.iface))
134134
}
@@ -167,8 +167,8 @@ func (b *Base) Close() error {
167167
type BasicOption struct {
168168
TFO bool `proxy:"tfo,omitempty"`
169169
MPTCP bool `proxy:"mptcp,omitempty"`
170-
Interface string `proxy:"interface-name,omitempty" group:"interface-name,omitempty"`
171-
RoutingMark int `proxy:"routing-mark,omitempty" group:"routing-mark,omitempty"`
170+
Interface string `proxy:"interface-name,omitempty"`
171+
RoutingMark int `proxy:"routing-mark,omitempty"`
172172
IPVersion string `proxy:"ip-version,omitempty"`
173173
DialerProxy string `proxy:"dialer-proxy,omitempty"` // don't apply this option into groups, but can set a group name in a proxy
174174
}
@@ -317,8 +317,8 @@ type autoCloseProxyAdapter struct {
317317
closeErr error
318318
}
319319

320-
func (p *autoCloseProxyAdapter) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
321-
c, err := p.ProxyAdapter.DialContext(ctx, metadata, opts...)
320+
func (p *autoCloseProxyAdapter) DialContext(ctx context.Context, metadata *C.Metadata) (_ C.Conn, err error) {
321+
c, err := p.ProxyAdapter.DialContext(ctx, metadata)
322322
if err != nil {
323323
return nil, err
324324
}
@@ -339,8 +339,8 @@ func (p *autoCloseProxyAdapter) DialContextWithDialer(ctx context.Context, diale
339339
return c, nil
340340
}
341341

342-
func (p *autoCloseProxyAdapter) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
343-
pc, err := p.ProxyAdapter.ListenPacketContext(ctx, metadata, opts...)
342+
func (p *autoCloseProxyAdapter) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (_ C.PacketConn, err error) {
343+
pc, err := p.ProxyAdapter.ListenPacketContext(ctx, metadata)
344344
if err != nil {
345345
return nil, err
346346
}

adapter/outbound/direct.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,21 @@ type DirectOption struct {
2020
}
2121

2222
// DialContext implements C.ProxyAdapter
23-
func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
23+
func (d *Direct) DialContext(ctx context.Context, metadata *C.Metadata) (C.Conn, error) {
2424
if err := d.loopBack.CheckConn(metadata); err != nil {
2525
return nil, err
2626
}
27+
opts := d.DialOptions()
2728
opts = append(opts, dialer.WithResolver(resolver.DirectHostResolver))
28-
c, err := dialer.DialContext(ctx, "tcp", metadata.RemoteAddress(), d.Base.DialOptions(opts...)...)
29+
c, err := dialer.DialContext(ctx, "tcp", metadata.RemoteAddress(), opts...)
2930
if err != nil {
3031
return nil, err
3132
}
3233
return d.loopBack.NewConn(NewConn(c, d)), nil
3334
}
3435

3536
// ListenPacketContext implements C.ProxyAdapter
36-
func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
37+
func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (C.PacketConn, error) {
3738
if err := d.loopBack.CheckPacketConn(metadata); err != nil {
3839
return nil, err
3940
}
@@ -45,7 +46,7 @@ func (d *Direct) ListenPacketContext(ctx context.Context, metadata *C.Metadata,
4546
}
4647
metadata.DstIP = ip
4748
}
48-
pc, err := dialer.NewDialer(d.Base.DialOptions(opts...)...).ListenPacket(ctx, "udp", "", metadata.AddrPort())
49+
pc, err := dialer.NewDialer(d.DialOptions()...).ListenPacket(ctx, "udp", "", metadata.AddrPort())
4950
if err != nil {
5051
return nil, err
5152
}

adapter/outbound/dns.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77

88
N "github.com/metacubex/mihomo/common/net"
99
"github.com/metacubex/mihomo/common/pool"
10-
"github.com/metacubex/mihomo/component/dialer"
1110
"github.com/metacubex/mihomo/component/resolver"
1211
C "github.com/metacubex/mihomo/constant"
1312
"github.com/metacubex/mihomo/log"
@@ -23,14 +22,14 @@ type DnsOption struct {
2322
}
2423

2524
// DialContext implements C.ProxyAdapter
26-
func (d *Dns) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
25+
func (d *Dns) DialContext(ctx context.Context, metadata *C.Metadata) (C.Conn, error) {
2726
left, right := N.Pipe()
2827
go resolver.RelayDnsConn(context.Background(), right, 0)
2928
return NewConn(left, d), nil
3029
}
3130

3231
// ListenPacketContext implements C.ProxyAdapter
33-
func (d *Dns) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
32+
func (d *Dns) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (C.PacketConn, error) {
3433
log.Debugln("[DNS] hijack udp:%s from %s", metadata.RemoteAddress(), metadata.SourceAddrPort())
3534

3635
ctx, cancel := context.WithCancel(context.Background())

adapter/outbound/http.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func (h *Http) StreamConnContext(ctx context.Context, c net.Conn, metadata *C.Me
5858
}
5959

6060
// DialContext implements C.ProxyAdapter
61-
func (h *Http) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
62-
return h.DialContextWithDialer(ctx, dialer.NewDialer(h.Base.DialOptions(opts...)...), metadata)
61+
func (h *Http) DialContext(ctx context.Context, metadata *C.Metadata) (_ C.Conn, err error) {
62+
return h.DialContextWithDialer(ctx, dialer.NewDialer(h.DialOptions()...), metadata)
6363
}
6464

6565
// DialContextWithDialer implements C.ProxyAdapter

adapter/outbound/hysteria.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -46,29 +46,29 @@ type Hysteria struct {
4646
client *core.Client
4747
}
4848

49-
func (h *Hysteria) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
50-
tcpConn, err := h.client.DialTCP(metadata.String(), metadata.DstPort, h.genHdc(ctx, opts...))
49+
func (h *Hysteria) DialContext(ctx context.Context, metadata *C.Metadata) (C.Conn, error) {
50+
tcpConn, err := h.client.DialTCP(metadata.String(), metadata.DstPort, h.genHdc(ctx))
5151
if err != nil {
5252
return nil, err
5353
}
5454

5555
return NewConn(tcpConn, h), nil
5656
}
5757

58-
func (h *Hysteria) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.PacketConn, error) {
59-
udpConn, err := h.client.DialUDP(h.genHdc(ctx, opts...))
58+
func (h *Hysteria) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (C.PacketConn, error) {
59+
udpConn, err := h.client.DialUDP(h.genHdc(ctx))
6060
if err != nil {
6161
return nil, err
6262
}
6363
return newPacketConn(&hyPacketConn{udpConn}, h), nil
6464
}
6565

66-
func (h *Hysteria) genHdc(ctx context.Context, opts ...dialer.Option) utils.PacketDialer {
66+
func (h *Hysteria) genHdc(ctx context.Context) utils.PacketDialer {
6767
return &hyDialerWithContext{
6868
ctx: context.Background(),
6969
hyDialer: func(network string, rAddr net.Addr) (net.PacketConn, error) {
7070
var err error
71-
var cDialer C.Dialer = dialer.NewDialer(h.Base.DialOptions(opts...)...)
71+
var cDialer C.Dialer = dialer.NewDialer(h.DialOptions()...)
7272
if len(h.option.DialerProxy) > 0 {
7373
cDialer, err = proxydialer.NewByName(h.option.DialerProxy, cDialer)
7474
if err != nil {

adapter/outbound/hysteria2.go

+19-23
Original file line numberDiff line numberDiff line change
@@ -68,19 +68,15 @@ type Hysteria2Option struct {
6868
MaxConnectionReceiveWindow uint64 `proxy:"max-connection-receive-window,omitempty"`
6969
}
7070

71-
func (h *Hysteria2) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.Conn, err error) {
72-
options := h.Base.DialOptions(opts...)
73-
h.dialer.SetDialer(dialer.NewDialer(options...))
71+
func (h *Hysteria2) DialContext(ctx context.Context, metadata *C.Metadata) (_ C.Conn, err error) {
7472
c, err := h.client.DialConn(ctx, M.ParseSocksaddrHostPort(metadata.String(), metadata.DstPort))
7573
if err != nil {
7674
return nil, err
7775
}
7876
return NewConn(c, h), nil
7977
}
8078

81-
func (h *Hysteria2) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
82-
options := h.Base.DialOptions(opts...)
83-
h.dialer.SetDialer(dialer.NewDialer(options...))
79+
func (h *Hysteria2) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (_ C.PacketConn, err error) {
8480
pc, err := h.client.ListenPacket(ctx)
8581
if err != nil {
8682
return nil, err
@@ -108,6 +104,22 @@ func (h *Hysteria2) ProxyInfo() C.ProxyInfo {
108104

109105
func NewHysteria2(option Hysteria2Option) (*Hysteria2, error) {
110106
addr := net.JoinHostPort(option.Server, strconv.Itoa(option.Port))
107+
outbound := &Hysteria2{
108+
Base: &Base{
109+
name: option.Name,
110+
addr: addr,
111+
tp: C.Hysteria2,
112+
udp: true,
113+
iface: option.Interface,
114+
rmark: option.RoutingMark,
115+
prefer: C.NewDNSPrefer(option.IPVersion),
116+
},
117+
option: &option,
118+
}
119+
120+
singDialer := proxydialer.NewByNameSingDialer(option.DialerProxy, dialer.NewDialer(outbound.DialOptions()...))
121+
outbound.dialer = singDialer
122+
111123
var salamanderPassword string
112124
if len(option.Obfs) > 0 {
113125
if option.ObfsPassword == "" {
@@ -155,8 +167,6 @@ func NewHysteria2(option Hysteria2Option) (*Hysteria2, error) {
155167
MaxConnectionReceiveWindow: option.MaxConnectionReceiveWindow,
156168
}
157169

158-
singDialer := proxydialer.NewByNameSingDialer(option.DialerProxy, dialer.NewDialer())
159-
160170
clientOptions := hysteria2.ClientOptions{
161171
Context: context.TODO(),
162172
Dialer: singDialer,
@@ -207,21 +217,7 @@ func NewHysteria2(option Hysteria2Option) (*Hysteria2, error) {
207217
if err != nil {
208218
return nil, err
209219
}
210-
211-
outbound := &Hysteria2{
212-
Base: &Base{
213-
name: option.Name,
214-
addr: addr,
215-
tp: C.Hysteria2,
216-
udp: true,
217-
iface: option.Interface,
218-
rmark: option.RoutingMark,
219-
prefer: C.NewDNSPrefer(option.IPVersion),
220-
},
221-
option: &option,
222-
client: client,
223-
dialer: singDialer,
224-
}
220+
outbound.client = client
225221

226222
return outbound, nil
227223
}

adapter/outbound/mieru.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ type MieruOption struct {
4040
}
4141

4242
// DialContext implements C.ProxyAdapter
43-
func (m *Mieru) DialContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (C.Conn, error) {
44-
if err := m.ensureClientIsRunning(opts...); err != nil {
43+
func (m *Mieru) DialContext(ctx context.Context, metadata *C.Metadata) (C.Conn, error) {
44+
if err := m.ensureClientIsRunning(); err != nil {
4545
return nil, err
4646
}
4747
addr := metadataToMieruNetAddrSpec(metadata)
@@ -53,8 +53,8 @@ func (m *Mieru) DialContext(ctx context.Context, metadata *C.Metadata, opts ...d
5353
}
5454

5555
// ListenPacketContext implements C.ProxyAdapter
56-
func (m *Mieru) ListenPacketContext(ctx context.Context, metadata *C.Metadata, opts ...dialer.Option) (_ C.PacketConn, err error) {
57-
if err := m.ensureClientIsRunning(opts...); err != nil {
56+
func (m *Mieru) ListenPacketContext(ctx context.Context, metadata *C.Metadata) (_ C.PacketConn, err error) {
57+
if err := m.ensureClientIsRunning(); err != nil {
5858
return nil, err
5959
}
6060
c, err := m.client.DialContext(ctx, metadata.UDPAddr())
@@ -76,7 +76,7 @@ func (m *Mieru) ProxyInfo() C.ProxyInfo {
7676
return info
7777
}
7878

79-
func (m *Mieru) ensureClientIsRunning(opts ...dialer.Option) error {
79+
func (m *Mieru) ensureClientIsRunning() error {
8080
m.mu.Lock()
8181
defer m.mu.Unlock()
8282

@@ -85,7 +85,7 @@ func (m *Mieru) ensureClientIsRunning(opts ...dialer.Option) error {
8585
}
8686

8787
// Create a dialer and add it to the client config, before starting the client.
88-
var dialer C.Dialer = dialer.NewDialer(m.Base.DialOptions(opts...)...)
88+
var dialer C.Dialer = dialer.NewDialer(m.DialOptions()...)
8989
var err error
9090
if len(m.option.DialerProxy) > 0 {
9191
dialer, err = proxydialer.NewByName(m.option.DialerProxy, dialer)

0 commit comments

Comments
 (0)