Просмотр исходного кода

Merge remote-tracking branch 'origin/master' into stable

tags/v2.2.1^2
9seconds 1 месяц назад
Родитель
Сommit
9d5fd989e5
3 измененных файлов: 25 добавлений и 2 удалений
  1. 1
    1
      mtglib/internal/dc/telegram.go
  2. 9
    1
      mtglib/internal/tls/fake/server_side.go
  3. 15
    0
      network/v2/proxy_network.go

+ 1
- 1
mtglib/internal/dc/telegram.go Просмотреть файл

20
 	case preferIPOnlyIPv4:
20
 	case preferIPOnlyIPv4:
21
 		return t.view.getV4(dc)
21
 		return t.view.getV4(dc)
22
 	case preferIPOnlyIPv6:
22
 	case preferIPOnlyIPv6:
23
-		return t.view.getV4(dc)
23
+		return t.view.getV6(dc)
24
 	case preferIPPreferIPv4:
24
 	case preferIPPreferIPv4:
25
 		return append(t.view.getV4(dc), t.view.getV6(dc)...)
25
 		return append(t.view.getV4(dc), t.view.getV6(dc)...)
26
 	}
26
 	}

+ 9
- 1
mtglib/internal/tls/fake/server_side.go Просмотреть файл

9
 	"io"
9
 	"io"
10
 	rnd "math/rand/v2"
10
 	rnd "math/rand/v2"
11
 
11
 
12
+	"github.com/9seconds/mtg/v2/mtglib/internal/doppel"
12
 	"github.com/9seconds/mtg/v2/mtglib/internal/tls"
13
 	"github.com/9seconds/mtg/v2/mtglib/internal/tls"
13
 	"golang.org/x/crypto/curve25519"
14
 	"golang.org/x/crypto/curve25519"
14
 )
15
 )
125
 }
126
 }
126
 
127
 
127
 func generateNoise(buf *bytes.Buffer) {
128
 func generateNoise(buf *bytes.Buffer) {
128
-	data := make([]byte, int64(1024+rnd.IntN(3092)))
129
+	data := make(
130
+		[]byte,
131
+		int64(
132
+			doppel.TLSRecordSizeStart+rnd.IntN(
133
+				doppel.TLSRecordSizeAccel-doppel.TLSRecordSizeStart,
134
+			),
135
+		),
136
+	)
129
 
137
 
130
 	if _, err := rand.Read(data[:]); err != nil {
138
 	if _, err := rand.Read(data[:]); err != nil {
131
 		panic(err)
139
 		panic(err)

+ 15
- 0
network/v2/proxy_network.go Просмотреть файл

3
 import (
3
 import (
4
 	"context"
4
 	"context"
5
 	"fmt"
5
 	"fmt"
6
+	"net/http"
6
 	"net/url"
7
 	"net/url"
7
 
8
 
8
 	"github.com/9seconds/mtg/v2/essentials"
9
 	"github.com/9seconds/mtg/v2/essentials"
15
 	client proxy.ContextDialer
16
 	client proxy.ContextDialer
16
 }
17
 }
17
 
18
 
19
+func (p proxyNetwork) Dial(network, address string) (essentials.Conn, error) {
20
+	return p.DialContext(context.Background(), network, address)
21
+}
22
+
18
 func (p proxyNetwork) DialContext(ctx context.Context, network, address string) (essentials.Conn, error) {
23
 func (p proxyNetwork) DialContext(ctx context.Context, network, address string) (essentials.Conn, error) {
19
 	conn, err := p.client.DialContext(ctx, network, address)
24
 	conn, err := p.client.DialContext(ctx, network, address)
20
 	if err != nil {
25
 	if err != nil {
24
 	return essentials.WrapNetConn(conn), nil
29
 	return essentials.WrapNetConn(conn), nil
25
 }
30
 }
26
 
31
 
32
+func (p proxyNetwork) MakeHTTPClient(
33
+	dialFunc func(context.Context, string, string) (essentials.Conn, error),
34
+) *http.Client {
35
+	if dialFunc == nil {
36
+		dialFunc = p.DialContext
37
+	}
38
+
39
+	return p.Network.MakeHTTPClient(dialFunc)
40
+}
41
+
27
 func NewProxyNetwork(base mtglib.Network, proxyURL *url.URL) (*proxyNetwork, error) {
42
 func NewProxyNetwork(base mtglib.Network, proxyURL *url.URL) (*proxyNetwork, error) {
28
 	socks, err := proxy.FromURL(proxyURL, base.NativeDialer())
43
 	socks, err := proxy.FromURL(proxyURL, base.NativeDialer())
29
 	if err != nil {
44
 	if err != nil {

Загрузка…
Отмена
Сохранить