|
|
@@ -1,11 +1,13 @@
|
|
1
|
1
|
package telegram
|
|
2
|
2
|
|
|
3
|
3
|
import (
|
|
|
4
|
+ "io"
|
|
4
|
5
|
"io/ioutil"
|
|
5
|
6
|
"net"
|
|
6
|
7
|
"net/http"
|
|
7
|
8
|
"sync"
|
|
8
|
9
|
|
|
|
10
|
+ "github.com/juju/errors"
|
|
9
|
11
|
"go.uber.org/zap"
|
|
10
|
12
|
|
|
11
|
13
|
"github.com/9seconds/mtg/config"
|
|
|
@@ -13,7 +15,6 @@ import (
|
|
13
|
15
|
"github.com/9seconds/mtg/mtproto/rpc"
|
|
14
|
16
|
mtwrappers "github.com/9seconds/mtg/mtproto/wrappers"
|
|
15
|
17
|
"github.com/9seconds/mtg/wrappers"
|
|
16
|
|
- "github.com/juju/errors"
|
|
17
|
18
|
)
|
|
18
|
19
|
|
|
19
|
20
|
type middleTelegram struct {
|
|
|
@@ -70,7 +71,7 @@ func (t *middleTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.Re
|
|
70
|
71
|
return nil, nil
|
|
71
|
72
|
}
|
|
72
|
73
|
|
|
73
|
|
-func (t *middleTelegram) sendRPCNonceRequest(conn wrappers.ReadWriteCloserWithAddr) (*rpc.RPCNonceRequest, error) {
|
|
|
74
|
+func (t *middleTelegram) sendRPCNonceRequest(conn io.Writer) (*rpc.RPCNonceRequest, error) {
|
|
74
|
75
|
rpcNonceReq, err := rpc.NewRPCNonceRequest(t.proxySecret)
|
|
75
|
76
|
if err != nil {
|
|
76
|
77
|
return nil, errors.Annotate(err, "Cannot create RPC nonce request")
|
|
|
@@ -82,7 +83,7 @@ func (t *middleTelegram) sendRPCNonceRequest(conn wrappers.ReadWriteCloserWithAd
|
|
82
|
83
|
return rpcNonceReq, nil
|
|
83
|
84
|
}
|
|
84
|
85
|
|
|
85
|
|
-func (t *middleTelegram) receiveRPCNonceResponse(conn wrappers.ReadWriteCloserWithAddr, req *rpc.RPCNonceRequest) (*rpc.RPCNonceResponse, error) {
|
|
|
86
|
+func (t *middleTelegram) receiveRPCNonceResponse(conn io.Reader, req *rpc.RPCNonceRequest) (*rpc.RPCNonceResponse, error) {
|
|
86
|
87
|
ans, err := ioutil.ReadAll(conn)
|
|
87
|
88
|
if err != nil {
|
|
88
|
89
|
return nil, errors.Annotate(err, "Cannot read RPC nonce response")
|
|
|
@@ -98,7 +99,7 @@ func (t *middleTelegram) receiveRPCNonceResponse(conn wrappers.ReadWriteCloserWi
|
|
98
|
99
|
return rpcNonceResp, nil
|
|
99
|
100
|
}
|
|
100
|
101
|
|
|
101
|
|
-func (t *middleTelegram) sendRPCHandshakeRequest(conn wrappers.ReadWriteCloserWithAddr) (*rpc.RPCHandshakeRequest, error) {
|
|
|
102
|
+func (t *middleTelegram) sendRPCHandshakeRequest(conn io.Writer) (*rpc.RPCHandshakeRequest, error) {
|
|
102
|
103
|
req := rpc.NewRPCHandshakeRequest()
|
|
103
|
104
|
if _, err := conn.Write(req.Bytes()); err != nil {
|
|
104
|
105
|
return nil, errors.Annotate(err, "Cannot send RPC handshake request")
|
|
|
@@ -107,7 +108,7 @@ func (t *middleTelegram) sendRPCHandshakeRequest(conn wrappers.ReadWriteCloserWi
|
|
107
|
108
|
return req, nil
|
|
108
|
109
|
}
|
|
109
|
110
|
|
|
110
|
|
-func (t *middleTelegram) receiveRPCHandshakeResponse(conn wrappers.ReadWriteCloserWithAddr, req *rpc.RPCHandshakeRequest) (*rpc.RPCHandshakeResponse, error) {
|
|
|
111
|
+func (t *middleTelegram) receiveRPCHandshakeResponse(conn io.Reader, req *rpc.RPCHandshakeRequest) (*rpc.RPCHandshakeResponse, error) {
|
|
111
|
112
|
ans, err := ioutil.ReadAll(conn)
|
|
112
|
113
|
if err != nil {
|
|
113
|
114
|
return nil, errors.Annotate(err, "Cannot read RPC handshake response")
|