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

Use dc indexes accordingly

tags/v2.0.0-rc1
9seconds 5 лет назад
Родитель
Сommit
02aa969d6c

+ 5
- 3
mtglib/internal/obfuscated2/handshake_frame.go Просмотреть файл

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

+ 2
- 2
mtglib/internal/obfuscated2/handshake_frame_internal_test.go Просмотреть файл

31
 	suite.Equal("zyjgwaWXlTP6qjVMUP2scQbqdUtspmyH1Hen+2Ess8w", suite.Encode(hf.key()))
31
 	suite.Equal("zyjgwaWXlTP6qjVMUP2scQbqdUtspmyH1Hen+2Ess8w", suite.Encode(hf.key()))
32
 	suite.Equal("z0SZMW/b9fMaokYQe6PbOg", suite.Encode(hf.iv()))
32
 	suite.Equal("z0SZMW/b9fMaokYQe6PbOg", suite.Encode(hf.iv()))
33
 	suite.Equal("H5lBgQ", suite.Encode(hf.connectionType()))
33
 	suite.Equal("H5lBgQ", suite.Encode(hf.connectionType()))
34
-	suite.EqualValues(2093, hf.dc())
34
+	suite.EqualValues(2094, hf.dc())
35
 
35
 
36
 	inverted := hf.invert()
36
 	inverted := hf.invert()
37
 	suite.Equal("OtujexBGohrz9dtvMZlEz8yzLGH7p3fUh2ymbEt16gY", suite.Encode(inverted.key()))
37
 	suite.Equal("OtujexBGohrz9dtvMZlEz8yzLGH7p3fUh2ymbEt16gY", suite.Encode(inverted.key()))
38
 	suite.Equal("caz9UEw1qvozlZelweAozw", suite.Encode(inverted.iv()))
38
 	suite.Equal("caz9UEw1qvozlZelweAozw", suite.Encode(inverted.iv()))
39
 	suite.Equal("H5lBgQ", suite.Encode(inverted.connectionType()))
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
 func TestHandshakeFrame(t *testing.T) {
43
 func TestHandshakeFrame(t *testing.T) {

+ 1
- 1
mtglib/internal/obfuscated2/testdata/client-handshake-snapshot-4529d55776e2d427.json Просмотреть файл

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

+ 1
- 1
mtglib/internal/obfuscated2/testdata/client-handshake-snapshot-585c944d672f60a2.json Просмотреть файл

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

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

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

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

33
 func (suite *TelegramTestSuite) TestUnknownDC() {
33
 func (suite *TelegramTestSuite) TestUnknownDC() {
34
 	testData := []int{
34
 	testData := []int{
35
 		-1,
35
 		-1,
36
-		5,
36
+        0,
37
+		6,
37
 		100,
38
 		100,
38
 	}
39
 	}
39
 
40
 
50
 func (suite *TelegramTestSuite) TestDialToCorrectIPs() {
51
 func (suite *TelegramTestSuite) TestDialToCorrectIPs() {
51
 	testData := map[int][]tgAddr{}
52
 	testData := map[int][]tgAddr{}
52
 
53
 
53
-	for i := 0; i < 5; i++ {
54
+	for i := 1; i <= 5; i++ {
54
 		testData[i] = []tgAddr{}
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
 	for i, v := range testData {
60
 	for i, v := range testData {
95
 			}
96
 			}
96
 
97
 
97
 			tg, _ := New(suite.dialerMock, name)
98
 			tg, _ := New(suite.dialerMock, name)
98
-			_, err := tg.Dial(context.Background(), 0)
99
+			_, err := tg.Dial(context.Background(), 1)
99
 
100
 
100
 			assert.True(t, errors.Is(err, io.EOF))
101
 			assert.True(t, errors.Is(err, io.EOF))
101
 		})
102
 		})
122
 
123
 
123
 			tg, _ := New(suite.dialerMock, name)
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
 			assert.NoError(t, err)
127
 			assert.NoError(t, err)
127
 			assert.Equal(t, conn, res)
128
 			assert.Equal(t, conn, res)
128
 		})
129
 		})

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