9seconds 7 лет назад
Родитель
Сommit
c35c482de7
3 измененных файлов: 17 добавлений и 3 удалений
  1. 11
    1
      config/config.go
  2. 2
    1
      main.go
  3. 4
    1
      telegram/middle.go

+ 11
- 1
config/config.go Просмотреть файл

@@ -38,6 +38,7 @@ type Config struct {
38 38
 	StatsIP    net.IP
39 39
 
40 40
 	Secret []byte
41
+	AdTag  []byte
41 42
 }
42 43
 
43 44
 // URLs contains links to the proxy (tg://, t.me) and their QR codes.
@@ -89,7 +90,7 @@ func NewConfig(debug, verbose bool, // nolint: gocyclo
89 90
 	publicIPv4 net.IP, PublicIPv4Port uint16,
90 91
 	publicIPv6 net.IP, publicIPv6Port uint16,
91 92
 	statsIP net.IP, statsPort uint16,
92
-	secret string) (*Config, error) {
93
+	secret, adtag string) (*Config, error) {
93 94
 	if len(secret) != 32 {
94 95
 		return nil, errors.New("Telegram demands secret of length 32")
95 96
 	}
@@ -98,6 +99,14 @@ func NewConfig(debug, verbose bool, // nolint: gocyclo
98 99
 		return nil, errors.Annotate(err, "Cannot create config")
99 100
 	}
100 101
 
102
+	var adTagBytes []byte
103
+	if len(adtag) != 0 {
104
+		adTagBytes, err = hex.DecodeString(adtag)
105
+		if err != nil {
106
+			return nil, errors.Annotate(err, "Cannot create config")
107
+		}
108
+	}
109
+
101 110
 	if publicIPv4 == nil {
102 111
 		publicIPv4, err = getGlobalIPv4()
103 112
 		if err != nil {
@@ -138,6 +147,7 @@ func NewConfig(debug, verbose bool, // nolint: gocyclo
138 147
 		StatsIP:        statsIP,
139 148
 		StatsPort:      statsPort,
140 149
 		Secret:         secretBytes,
150
+		AdTag:          adTagBytes,
141 151
 	}
142 152
 
143 153
 	return conf, nil

+ 2
- 1
main.go Просмотреть файл

@@ -72,6 +72,7 @@ var (
72 72
 			Uint16()
73 73
 
74 74
 	secret = app.Arg("secret", "Secret of this proxy.").Required().String()
75
+	adtag  = app.Arg("adtag", "ADTag of the proxy.").String()
75 76
 )
76 77
 
77 78
 func init() {
@@ -93,7 +94,7 @@ func main() {
93 94
 		*publicIPv4, *publicIPv4Port,
94 95
 		*publicIPv6, *publicIPv6Port,
95 96
 		*statsIP, *statsPort,
96
-		*secret,
97
+		*secret, *adtag,
97 98
 	)
98 99
 	if err != nil {
99 100
 		usage(err.Error())

+ 4
- 1
telegram/middle.go Просмотреть файл

@@ -19,6 +19,8 @@ import (
19 19
 
20 20
 type middleTelegram struct {
21 21
 	middleTelegramCaller
22
+
23
+	adtag []byte
22 24
 }
23 25
 
24 26
 func NewMiddleTelegram(conf *config.Config, logger *zap.SugaredLogger) Telegram {
@@ -36,6 +38,7 @@ func NewMiddleTelegram(conf *config.Config, logger *zap.SugaredLogger) Telegram
36 38
 			},
37 39
 			dialerMutex: &sync.RWMutex{},
38 40
 		},
41
+		adtag: conf.AdTag,
39 42
 	}
40 43
 
41 44
 	if err := tg.update(); err != nil {
@@ -70,7 +73,7 @@ func (t *middleTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.Re
70 73
 		return nil, err
71 74
 	}
72 75
 
73
-	return nil, nil
76
+	return mtwrappers.NewProxyRequestRWC(secureConn, connOpts, t.adtag)
74 77
 }
75 78
 
76 79
 func (t *middleTelegram) sendRPCNonceRequest(conn io.Writer) (*rpc.RPCNonceRequest, error) {

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