Bläddra i källkod

Use dc indexes accordingly

tags/v2.0.0-rc1
9seconds 5 år sedan
förälder
incheckning
02aa969d6c

+ 5
- 3
mtglib/internal/obfuscated2/handshake_frame.go Visa fil

@@ -3,6 +3,8 @@ package obfuscated2
3 3
 import "encoding/binary"
4 4
 
5 5
 const (
6
+	DefaultDC = 2
7
+
6 8
 	handshakeFrameLen = 64
7 9
 
8 10
 	handshakeFrameLenKey            = 32
@@ -41,11 +43,11 @@ func (h *handshakeFrame) dc() int {
41 43
 
42 44
 	switch {
43 45
 	case idx > 0:
44
-		return int(idx) - 1
46
+		return int(idx)
45 47
 	case idx < 0:
46
-		return -int(idx + 1)
48
+		return -int(idx)
47 49
 	default:
48
-		return 0
50
+		return DefaultDC
49 51
 	}
50 52
 }
51 53
 

+ 2
- 2
mtglib/internal/obfuscated2/handshake_frame_internal_test.go Visa fil

@@ -31,13 +31,13 @@ func (suite *HandshakeFrameTestSuite) TestOk() {
31 31
 	suite.Equal("zyjgwaWXlTP6qjVMUP2scQbqdUtspmyH1Hen+2Ess8w", suite.Encode(hf.key()))
32 32
 	suite.Equal("z0SZMW/b9fMaokYQe6PbOg", suite.Encode(hf.iv()))
33 33
 	suite.Equal("H5lBgQ", suite.Encode(hf.connectionType()))
34
-	suite.EqualValues(2093, hf.dc())
34
+	suite.EqualValues(2094, hf.dc())
35 35
 
36 36
 	inverted := hf.invert()
37 37
 	suite.Equal("OtujexBGohrz9dtvMZlEz8yzLGH7p3fUh2ymbEt16gY", suite.Encode(inverted.key()))
38 38
 	suite.Equal("caz9UEw1qvozlZelweAozw", suite.Encode(inverted.iv()))
39 39
 	suite.Equal("H5lBgQ", suite.Encode(inverted.connectionType()))
40
-	suite.EqualValues(2093, inverted.dc())
40
+	suite.EqualValues(2094, inverted.dc())
41 41
 }
42 42
 
43 43
 func TestHandshakeFrame(t *testing.T) {

+ 1
- 1
mtglib/internal/obfuscated2/testdata/client-handshake-snapshot-4529d55776e2d427.json Visa fil

@@ -1,7 +1,7 @@
1 1
 {
2 2
   "secret": "NnoYmu4Y+jHBkAVO/UqOlQ",
3 3
   "frame": "gDcXwaMY4RwlR+nJw+ILDr123UJHHjjE/U5pF4m/Y04AmH7lEpEL6UYRnIYDbDlOHSDxc1ToziPvNlJJh8RMow",
4
-  "dc": 1,
4
+  "dc": 2,
5 5
   "encrypted": {
6 6
     "text": "AQIDBAUGBwgJCg",
7 7
     "cipher": "wZV3TR39l9nRoQ"

+ 1
- 1
mtglib/internal/obfuscated2/testdata/client-handshake-snapshot-585c944d672f60a2.json Visa fil

@@ -1,7 +1,7 @@
1 1
 {
2 2
   "secret": "NnoYmu4Y+jHBkAVO/UqOlQ",
3 3
   "frame": "M2WyxeiwIQB+ZOFxNzSNHtu9OdESkfxv3JkKFimCxUoYA3BD/Ql9nXB/OIonCKLUKCcS0VzZ2P6/+5oQ9GI8YA",
4
-  "dc": 1,
4
+  "dc": 2,
5 5
   "encrypted": {
6 6
     "text": "AQIDBAUGBwgJCg",
7 7
     "cipher": "tzAwrCz00odERg"

+ 5
- 5
mtglib/internal/telegram/telegram.go Visa fil

@@ -14,16 +14,16 @@ type Telegram struct {
14 14
 }
15 15
 
16 16
 func (t Telegram) Dial(ctx context.Context, dc int) (net.Conn, error) {
17
-	if dc < 0 || dc > 4 {
17
+	if dc <= 0 || dc > 5 {
18 18
 		return nil, fmt.Errorf("do not know how to dial to %d", dc)
19 19
 	}
20 20
 
21 21
 	var addresses []tgAddr
22 22
 
23 23
 	if t.preferIP == preferIPOnlyIPv6 {
24
-		addresses = []tgAddr{v6Addresses[dc]}
24
+		addresses = []tgAddr{v6Addresses[dc-1]}
25 25
 	} else {
26
-		addresses = append(addresses, v4Addresses[dc]...)
26
+		addresses = append(addresses, v4Addresses[dc-1]...)
27 27
 		rand.Shuffle(len(addresses), func(i, j int) {
28 28
 			addresses[i], addresses[j] = addresses[j], addresses[i]
29 29
 		})
@@ -31,9 +31,9 @@ func (t Telegram) Dial(ctx context.Context, dc int) (net.Conn, error) {
31 31
 
32 32
 	switch t.preferIP {
33 33
 	case preferIPPreferIPv4:
34
-		addresses = append(addresses, v6Addresses[dc])
34
+		addresses = append(addresses, v6Addresses[dc-1])
35 35
 	case preferIPPreferIPv6:
36
-		addresses = append([]tgAddr{v6Addresses[dc]}, addresses...)
36
+		addresses = append([]tgAddr{v6Addresses[dc-1]}, addresses...)
37 37
 	case preferIPOnlyIPv4, preferIPOnlyIPv6:
38 38
 	}
39 39
 

+ 7
- 6
mtglib/internal/telegram/telegram_internal_test.go Visa fil

@@ -33,7 +33,8 @@ func (suite *TelegramTestSuite) TearDownTest() {
33 33
 func (suite *TelegramTestSuite) TestUnknownDC() {
34 34
 	testData := []int{
35 35
 		-1,
36
-		5,
36
+        0,
37
+		6,
37 38
 		100,
38 39
 	}
39 40
 
@@ -50,10 +51,10 @@ func (suite *TelegramTestSuite) TestUnknownDC() {
50 51
 func (suite *TelegramTestSuite) TestDialToCorrectIPs() {
51 52
 	testData := map[int][]tgAddr{}
52 53
 
53
-	for i := 0; i < 5; i++ {
54
+	for i := 1; i <= 5; i++ {
54 55
 		testData[i] = []tgAddr{}
55
-		testData[i] = append(testData[i], v4Addresses[i]...)
56
-		testData[i] = append(testData[i], v6Addresses[i])
56
+		testData[i] = append(testData[i], v4Addresses[i-1]...)
57
+		testData[i] = append(testData[i], v6Addresses[i-1])
57 58
 	}
58 59
 
59 60
 	for i, v := range testData {
@@ -95,7 +96,7 @@ func (suite *TelegramTestSuite) TestDialPreferIPRange() {
95 96
 			}
96 97
 
97 98
 			tg, _ := New(suite.dialerMock, name)
98
-			_, err := tg.Dial(context.Background(), 0)
99
+			_, err := tg.Dial(context.Background(), 1)
99 100
 
100 101
 			assert.True(t, errors.Is(err, io.EOF))
101 102
 		})
@@ -122,7 +123,7 @@ func (suite *TelegramTestSuite) TestDialPreferIPPriority() {
122 123
 
123 124
 			tg, _ := New(suite.dialerMock, name)
124 125
 
125
-			res, err := tg.Dial(context.Background(), 0)
126
+			res, err := tg.Dial(context.Background(), 1)
126 127
 			assert.NoError(t, err)
127 128
 			assert.Equal(t, conn, res)
128 129
 		})

Laddar…
Avbryt
Spara