Selaa lähdekoodia

Rename dialers into network

tags/v2.0.0-rc1
9seconds 5 vuotta sitten
vanhempi
commit
d5147f1935

+ 3
- 3
main.go Näytä tiedosto

@@ -7,7 +7,7 @@ import (
7 7
 	"os"
8 8
 	"time"
9 9
 
10
-	"github.com/9seconds/mtg/v2/mtglib/dialers"
10
+	"github.com/9seconds/mtg/v2/mtglib/network"
11 11
 )
12 12
 
13 13
 var version = "dev" // has to be set by ldflags
@@ -19,8 +19,8 @@ func main() {
19 19
 
20 20
 	fmt.Println(parseRawConfig(f))
21 21
 
22
-	bd, _ := dialers.NewDefaultBaseDialer(0, 0)
23
-	d, _ := dialers.MakeDialer(bd, "9.9.9.9", 0)
22
+	bd, _ := network.NewDefaultDialer(0, 0)
23
+	d, _ := network.NewNetwork(bd, "9.9.9.9", 0)
24 24
 
25 25
 	r, err := d.HTTP.Get("https://ifconfig.co")
26 26
 

+ 0
- 23
mtglib/dialers/socks5.go Näytä tiedosto

@@ -1,23 +0,0 @@
1
-package dialers
2
-
3
-import (
4
-	"fmt"
5
-	"net/url"
6
-	"time"
7
-
8
-	"golang.org/x/net/proxy"
9
-)
10
-
11
-func NewSocks5BaseDialer(proxyUrl *url.URL, timeout time.Duration, bufferSize int) (BaseDialer, error) {
12
-	baseDialer, err := NewDefaultBaseDialer(timeout, bufferSize)
13
-	if err != nil {
14
-		return nil, fmt.Errorf("cannot initialize base dialer: %w", err)
15
-	}
16
-
17
-	rv, err := proxy.FromURL(proxyUrl, baseDialer.(*defaultBaseDialer))
18
-	if err != nil {
19
-		return nil, fmt.Errorf("cannot initialize socks5 proxy dialer: %w", err)
20
-	}
21
-
22
-	return rv.(BaseDialer), nil
23
-}

mtglib/dialers/consts.go → mtglib/network/consts.go Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package dialers
1
+package network
2 2
 
3 3
 import "time"
4 4
 

mtglib/dialers/default.go → mtglib/network/default.go Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package dialers
1
+package network
2 2
 
3 3
 import (
4 4
 	"context"
@@ -9,17 +9,17 @@ import (
9 9
 	"github.com/libp2p/go-reuseport"
10 10
 )
11 11
 
12
-type defaultBaseDialer struct {
12
+type defaultDialer struct {
13 13
 	net.Dialer
14 14
 
15 15
 	bufferSize int
16 16
 }
17 17
 
18
-func (d *defaultBaseDialer) Dial(network, address string) (net.Conn, error) {
18
+func (d *defaultDialer) Dial(network, address string) (net.Conn, error) {
19 19
 	return d.DialContext(context.Background(), network, address)
20 20
 }
21 21
 
22
-func (d *defaultBaseDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
22
+func (d *defaultDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
23 23
 	switch network {
24 24
 	case "tcp", "tcp4", "tcp6":
25 25
 	default:
@@ -56,7 +56,7 @@ func (d *defaultBaseDialer) DialContext(ctx context.Context, network, address st
56 56
 	return tcpConn, nil
57 57
 }
58 58
 
59
-func NewDefaultBaseDialer(timeout time.Duration, bufferSize int) (BaseDialer, error) {
59
+func NewDefaultDialer(timeout time.Duration, bufferSize int) (Dialer, error) {
60 60
 	switch {
61 61
 	case timeout < 0:
62 62
 		return nil, fmt.Errorf("timeout %v should be positive number", timeout)
@@ -72,7 +72,7 @@ func NewDefaultBaseDialer(timeout time.Duration, bufferSize int) (BaseDialer, er
72 72
 		bufferSize = DefaultBufferSize
73 73
 	}
74 74
 
75
-	return &defaultBaseDialer{
75
+	return &defaultDialer{
76 76
 		Dialer: net.Dialer{
77 77
 			Timeout: timeout,
78 78
 			Control: reuseport.Control,

mtglib/dialers/interfaces.go → mtglib/network/interfaces.go Näytä tiedosto

@@ -1,11 +1,10 @@
1
-package dialers
1
+package network
2 2
 
3 3
 import (
4 4
 	"context"
5 5
 	"net"
6 6
 )
7 7
 
8
-type BaseDialer interface {
9
-	Dial(network, address string) (net.Conn, error)
8
+type Dialer interface {
10 9
 	DialContext(ctx context.Context, network, address string) (net.Conn, error)
11 10
 }

mtglib/dialers/dialer.go → mtglib/network/network.go Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package dialers
1
+package network
2 2
 
3 3
 import (
4 4
 	"context"
@@ -11,18 +11,18 @@ import (
11 11
 	doh "github.com/babolivier/go-doh-client"
12 12
 )
13 13
 
14
-type Dialer struct {
14
+type Network struct {
15 15
 	HTTP http.Client
16 16
 	DNS  doh.Resolver
17 17
 
18
-	baseDialer BaseDialer
18
+	dialer Dialer
19 19
 }
20 20
 
21
-func (d *Dialer) Dial(network, address string) (net.Conn, error) {
21
+func (d *Network) Dial(network, address string) (net.Conn, error) {
22 22
 	return d.DialContext(context.Background(), network, address)
23 23
 }
24 24
 
25
-func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
25
+func (d *Network) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
26 26
 	host, port, _ := net.SplitHostPort(address)
27 27
 
28 28
 	ips, err := d.resolveIPs(network, host)
@@ -35,7 +35,7 @@ func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.
35 35
 	})
36 36
 
37 37
 	for _, v := range ips {
38
-		if conn, err := d.baseDialer.DialContext(ctx, network, net.JoinHostPort(v, port)); err == nil {
38
+		if conn, err := d.dialer.DialContext(ctx, network, net.JoinHostPort(v, port)); err == nil {
39 39
 			return conn, nil
40 40
 		}
41 41
 	}
@@ -43,7 +43,7 @@ func (d *Dialer) DialContext(ctx context.Context, network, address string) (net.
43 43
 	return nil, fmt.Errorf("cannot dial to %s:%s", network, address)
44 44
 }
45 45
 
46
-func (d *Dialer) resolveIPs(network, address string) ([]string, error) {
46
+func (d *Network) resolveIPs(network, address string) ([]string, error) {
47 47
 	if net.ParseIP(address) != nil {
48 48
 		return []string{address}, nil
49 49
 	}
@@ -75,7 +75,7 @@ func (d *Dialer) resolveIPs(network, address string) ([]string, error) {
75 75
 	return ips, nil
76 76
 }
77 77
 
78
-func MakeDialer(base BaseDialer, dohHostname string, httpTimeout time.Duration) (*Dialer, error) {
78
+func NewNetwork(dialer Dialer, dohHostname string, httpTimeout time.Duration) (*Network, error) {
79 79
 	switch {
80 80
 	case httpTimeout < 0:
81 81
 		return nil, fmt.Errorf("timeout should be positive number %v", httpTimeout)
@@ -90,23 +90,23 @@ func MakeDialer(base BaseDialer, dohHostname string, httpTimeout time.Duration)
90 90
 	dohHTTPClient := &http.Client{
91 91
 		Timeout: httpTimeout,
92 92
 		Transport: &http.Transport{
93
-			DialContext: base.DialContext,
93
+			DialContext: dialer.DialContext,
94 94
 		},
95 95
 	}
96
-	rv := &Dialer{
97
-		baseDialer: base,
96
+	network := &Network{
97
+		dialer: dialer,
98 98
 		DNS: doh.Resolver{
99 99
 			Host:       dohHostname,
100 100
 			Class:      doh.IN,
101 101
 			HTTPClient: dohHTTPClient,
102 102
 		},
103 103
 	}
104
-	rv.HTTP = http.Client{
104
+	network.HTTP = http.Client{
105 105
 		Timeout: httpTimeout,
106 106
 		Transport: &http.Transport{
107
-			DialContext: rv.DialContext,
107
+			DialContext: network.DialContext,
108 108
 		},
109 109
 	}
110 110
 
111
-	return rv, nil
111
+	return network, nil
112 112
 }

mtglib/dialers/shadowsocks.go → mtglib/network/shadowsocks.go Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package dialers
1
+package network
2 2
 
3 3
 import (
4 4
 	"context"
@@ -12,23 +12,15 @@ import (
12 12
 	shadowsocks "github.com/shadowsocks/go-shadowsocks2/core"
13 13
 )
14 14
 
15
-type shadowsocksBaseDialer struct {
16
-	base   BaseDialer
17
-	cipher shadowsocks.StreamConnCipher
18
-}
19
-
20
-func (s *shadowsocksBaseDialer) Dial(network, address string) (net.Conn, error) {
21
-	conn, err := s.base.Dial(network, address)
22
-	if err != nil {
23
-		return nil, err
24
-	}
15
+type shadowsocksDialer struct {
16
+	Dialer
25 17
 
26
-	return s.cipher.StreamConn(conn), nil
18
+	cipher shadowsocks.StreamConnCipher
27 19
 }
28 20
 
29
-func (s *shadowsocksBaseDialer) DialContext(ctx context.Context,
21
+func (s *shadowsocksDialer) DialContext(ctx context.Context,
30 22
 	network, address string) (net.Conn, error) {
31
-	conn, err := s.base.DialContext(ctx, network, address)
23
+	conn, err := s.Dialer.DialContext(ctx, network, address)
32 24
 	if err != nil {
33 25
 		return nil, err
34 26
 	}
@@ -36,8 +28,8 @@ func (s *shadowsocksBaseDialer) DialContext(ctx context.Context,
36 28
 	return s.cipher.StreamConn(conn), nil
37 29
 }
38 30
 
39
-func NewShadowsocksBaseDialer(proxyUrl *url.URL,
40
-	timeout time.Duration, bufferSize int) (BaseDialer, error) {
31
+func NewShadowsocksDialer(proxyUrl *url.URL,
32
+	timeout time.Duration, bufferSize int) (Dialer, error) {
41 33
 	username := proxyUrl.User.Username()
42 34
 
43 35
 	decoded, err := base64.RawURLEncoding.DecodeString(username)
@@ -55,14 +47,14 @@ func NewShadowsocksBaseDialer(proxyUrl *url.URL,
55 47
 		return nil, fmt.Errorf("cannot initialize shadowsocks cipher: %w", err)
56 48
 	}
57 49
 
58
-	baseDialer, err := NewDefaultBaseDialer(timeout, bufferSize)
50
+	dialer, err := NewDefaultDialer(timeout, bufferSize)
59 51
 	if err != nil {
60 52
 		return nil, fmt.Errorf("cannot initialize a base dialer: %w", err)
61 53
 
62 54
 	}
63 55
 
64
-	return &shadowsocksBaseDialer{
65
-		base:   baseDialer,
56
+	return &shadowsocksDialer{
57
+		Dialer: dialer,
66 58
 		cipher: cipher,
67 59
 	}, nil
68 60
 }

+ 23
- 0
mtglib/network/socks5.go Näytä tiedosto

@@ -0,0 +1,23 @@
1
+package network
2
+
3
+import (
4
+	"fmt"
5
+	"net/url"
6
+	"time"
7
+
8
+	"golang.org/x/net/proxy"
9
+)
10
+
11
+func NewSocks5Dialer(proxyUrl *url.URL, timeout time.Duration, bufferSize int) (Dialer, error) {
12
+	dialer, err := NewDefaultDialer(timeout, bufferSize)
13
+	if err != nil {
14
+		return nil, fmt.Errorf("cannot initialize base dialer: %w", err)
15
+	}
16
+
17
+	rv, err := proxy.FromURL(proxyUrl, dialer.(*defaultDialer))
18
+	if err != nil {
19
+		return nil, fmt.Errorf("cannot initialize socks5 proxy dialer: %w", err)
20
+	}
21
+
22
+	return rv.(Dialer), nil
23
+}

Loading…
Peruuta
Tallenna