mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 16:01:55 +03:00
Remove wrap prefix
This commit is contained in:
+1
-1
@@ -15,7 +15,7 @@ func MiddleInit(ctx context.Context, cancel context.CancelFunc, socket net.Conn,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
connStream := conn.(wrappers.WrapStreamReadWriteCloser)
|
connStream := conn.(wrappers.StreamReadWriteCloser)
|
||||||
|
|
||||||
newConn := wrappers.NewMTProtoAbridged(connStream, opts)
|
newConn := wrappers.NewMTProtoAbridged(connStream, opts)
|
||||||
if opts.ConnectionType != mtproto.ConnectionTypeAbridged {
|
if opts.ConnectionType != mtproto.ConnectionTypeAbridged {
|
||||||
|
|||||||
+7
-8
@@ -58,26 +58,26 @@ func (p *Proxy) accept(conn net.Conn) {
|
|||||||
log.Errorw("Cannot initialize client connection", "error", err)
|
log.Errorw("Cannot initialize client connection", "error", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer client.(wrappers.WrapCloser).Close()
|
defer client.(io.Closer).Close()
|
||||||
|
|
||||||
server, err := p.getTelegramConn(ctx, cancel, opts, connID)
|
server, err := p.getTelegramConn(ctx, cancel, opts, connID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorw("Cannot initialize server connection", "error", err)
|
log.Errorw("Cannot initialize server connection", "error", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer server.(wrappers.WrapCloser).Close()
|
defer server.(io.Closer).Close()
|
||||||
|
|
||||||
wait := &sync.WaitGroup{}
|
wait := &sync.WaitGroup{}
|
||||||
wait.Add(2)
|
wait.Add(2)
|
||||||
|
|
||||||
if p.conf.UseMiddleProxy() {
|
if p.conf.UseMiddleProxy() {
|
||||||
clientPacket := client.(wrappers.WrapPacketReadWriteCloser)
|
clientPacket := client.(wrappers.PacketReadWriteCloser)
|
||||||
serverPacket := server.(wrappers.WrapPacketReadWriteCloser)
|
serverPacket := server.(wrappers.PacketReadWriteCloser)
|
||||||
go p.middlePipe(clientPacket, serverPacket, wait, &opts.ReadHacks)
|
go p.middlePipe(clientPacket, serverPacket, wait, &opts.ReadHacks)
|
||||||
go p.middlePipe(serverPacket, clientPacket, wait, &opts.WriteHacks)
|
go p.middlePipe(serverPacket, clientPacket, wait, &opts.WriteHacks)
|
||||||
} else {
|
} else {
|
||||||
clientStream := client.(wrappers.WrapStreamReadWriteCloser)
|
clientStream := client.(wrappers.StreamReadWriteCloser)
|
||||||
serverStream := server.(wrappers.WrapStreamReadWriteCloser)
|
serverStream := server.(wrappers.StreamReadWriteCloser)
|
||||||
go p.directPipe(clientStream, serverStream, wait)
|
go p.directPipe(clientStream, serverStream, wait)
|
||||||
go p.directPipe(serverStream, clientStream, wait)
|
go p.directPipe(serverStream, clientStream, wait)
|
||||||
}
|
}
|
||||||
@@ -104,9 +104,8 @@ func (p *Proxy) getTelegramConn(ctx context.Context, cancel context.CancelFunc,
|
|||||||
return packetConn, nil
|
return packetConn, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Proxy) middlePipe(src wrappers.WrapPacketReader, dst wrappers.WrapPacketWriter, wait *sync.WaitGroup, hacks *mtproto.Hacks) {
|
func (p *Proxy) middlePipe(src wrappers.PacketReader, dst wrappers.PacketWriter, wait *sync.WaitGroup, hacks *mtproto.Hacks) {
|
||||||
defer wait.Done()
|
defer wait.Done()
|
||||||
|
|
||||||
for {
|
for {
|
||||||
hacks.SimpleAck = false
|
hacks.SimpleAck = false
|
||||||
hacks.QuickAck = false
|
hacks.QuickAck = false
|
||||||
|
|||||||
+2
-4
@@ -30,14 +30,12 @@ func (t *tgDialer) dial(addr string) (net.Conn, error) {
|
|||||||
return conn, nil
|
return conn, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tgDialer) dialRWC(addr, connID string) (wrappers.WrapStreamReadWriteCloser, error) {
|
func (t *tgDialer) dialRWC(addr, connID string) (wrappers.StreamReadWriteCloser, error) {
|
||||||
conn, err := t.dial(addr)
|
conn, err := t.dial(addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
tgConn := wrappers.NewConn(conn, connID, wrappers.ConnPurposeTelegram, t.conf.PublicIPv4, t.conf.PublicIPv6)
|
||||||
tgConn := wrappers.NewConn(conn, connID, wrappers.ConnPurposeTelegram,
|
|
||||||
t.conf.PublicIPv4, t.conf.PublicIPv6)
|
|
||||||
|
|
||||||
return tgConn, nil
|
return tgConn, nil
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -32,7 +32,7 @@ type DirectTelegram struct {
|
|||||||
baseTelegram
|
baseTelegram
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DirectTelegram) Dial(connID string, connOpts *mtproto.ConnectionOpts) (wrappers.WrapStreamReadWriteCloser, error) {
|
func (t *DirectTelegram) Dial(connID string, connOpts *mtproto.ConnectionOpts) (wrappers.StreamReadWriteCloser, error) {
|
||||||
dc := connOpts.DC
|
dc := connOpts.DC
|
||||||
if dc < 0 {
|
if dc < 0 {
|
||||||
dc = -dc
|
dc = -dc
|
||||||
@@ -43,7 +43,7 @@ func (t *DirectTelegram) Dial(connID string, connOpts *mtproto.ConnectionOpts) (
|
|||||||
return t.baseTelegram.dial(dc-1, connID, connOpts.ConnectionProto)
|
return t.baseTelegram.dial(dc-1, connID, connOpts.ConnectionProto)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *DirectTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.WrapStreamReadWriteCloser) (wrappers.Wrap, error) {
|
func (t *DirectTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.StreamReadWriteCloser) (wrappers.Wrap, error) {
|
||||||
obfs2, frame := obfuscated2.MakeTelegramObfuscated2Frame(connOpts)
|
obfs2, frame := obfuscated2.MakeTelegramObfuscated2Frame(connOpts)
|
||||||
|
|
||||||
if _, err := conn.Write(frame); err != nil {
|
if _, err := conn.Write(frame); err != nil {
|
||||||
|
|||||||
+5
-5
@@ -19,7 +19,7 @@ type MiddleTelegram struct {
|
|||||||
conf *config.Config
|
conf *config.Config
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MiddleTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.WrapStreamReadWriteCloser) (wrappers.Wrap, error) {
|
func (t *MiddleTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.StreamReadWriteCloser) (wrappers.Wrap, error) {
|
||||||
rpcNonceConn := wrappers.NewMTProtoFrame(conn, rpc.SeqNoNonce)
|
rpcNonceConn := wrappers.NewMTProtoFrame(conn, rpc.SeqNoNonce)
|
||||||
|
|
||||||
rpcNonceReq, err := t.sendRPCNonceRequest(rpcNonceConn)
|
rpcNonceReq, err := t.sendRPCNonceRequest(rpcNonceConn)
|
||||||
@@ -46,7 +46,7 @@ func (t *MiddleTelegram) Init(connOpts *mtproto.ConnectionOpts, conn wrappers.Wr
|
|||||||
return wrappers.NewMTProtoProxy(frameConn, connOpts, t.conf.AdTag)
|
return wrappers.NewMTProtoProxy(frameConn, connOpts, t.conf.AdTag)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MiddleTelegram) sendRPCNonceRequest(conn wrappers.WrapPacketWriter) (*rpc.NonceRequest, error) {
|
func (t *MiddleTelegram) sendRPCNonceRequest(conn wrappers.PacketWriter) (*rpc.NonceRequest, error) {
|
||||||
rpcNonceReq, err := rpc.NewNonceRequest(t.proxySecret)
|
rpcNonceReq, err := rpc.NewNonceRequest(t.proxySecret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Annotate(err, "Cannot create RPC nonce request")
|
return nil, errors.Annotate(err, "Cannot create RPC nonce request")
|
||||||
@@ -58,7 +58,7 @@ func (t *MiddleTelegram) sendRPCNonceRequest(conn wrappers.WrapPacketWriter) (*r
|
|||||||
return rpcNonceReq, nil
|
return rpcNonceReq, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MiddleTelegram) receiveRPCNonceResponse(conn wrappers.WrapPacketReader, req *rpc.NonceRequest) (*rpc.NonceResponse, error) {
|
func (t *MiddleTelegram) receiveRPCNonceResponse(conn wrappers.PacketReader, req *rpc.NonceRequest) (*rpc.NonceResponse, error) {
|
||||||
packet, err := conn.Read()
|
packet, err := conn.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Annotate(err, "Cannot read RPC nonce response")
|
return nil, errors.Annotate(err, "Cannot read RPC nonce response")
|
||||||
@@ -75,7 +75,7 @@ func (t *MiddleTelegram) receiveRPCNonceResponse(conn wrappers.WrapPacketReader,
|
|||||||
return rpcNonceResp, nil
|
return rpcNonceResp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MiddleTelegram) sendRPCHandshakeRequest(conn wrappers.WrapPacketWriter) (*rpc.HandshakeRequest, error) {
|
func (t *MiddleTelegram) sendRPCHandshakeRequest(conn wrappers.PacketWriter) (*rpc.HandshakeRequest, error) {
|
||||||
req := rpc.NewHandshakeRequest()
|
req := rpc.NewHandshakeRequest()
|
||||||
if _, err := conn.Write(req.Bytes()); err != nil {
|
if _, err := conn.Write(req.Bytes()); err != nil {
|
||||||
return nil, errors.Annotate(err, "Cannot send RPC handshake request")
|
return nil, errors.Annotate(err, "Cannot send RPC handshake request")
|
||||||
@@ -84,7 +84,7 @@ func (t *MiddleTelegram) sendRPCHandshakeRequest(conn wrappers.WrapPacketWriter)
|
|||||||
return req, nil
|
return req, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *MiddleTelegram) receiveRPCHandshakeResponse(conn wrappers.WrapPacketReader, req *rpc.HandshakeRequest) (*rpc.HandshakeResponse, error) {
|
func (t *MiddleTelegram) receiveRPCHandshakeResponse(conn wrappers.PacketReader, req *rpc.HandshakeRequest) (*rpc.HandshakeResponse, error) {
|
||||||
packet, err := conn.Read()
|
packet, err := conn.Read()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Annotate(err, "Cannot read RPC handshake response")
|
return nil, errors.Annotate(err, "Cannot read RPC handshake response")
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ const (
|
|||||||
tgUserAgent = "mtg"
|
tgUserAgent = "mtg"
|
||||||
)
|
)
|
||||||
|
|
||||||
var middleTelegramProxyConfigSplitter *regexp.Regexp
|
var middleTelegramProxyConfigSplitter = regexp.MustCompile(`\s+`)
|
||||||
|
|
||||||
type middleTelegramCaller struct {
|
type middleTelegramCaller struct {
|
||||||
baseTelegram
|
baseTelegram
|
||||||
@@ -38,7 +38,7 @@ type middleTelegramCaller struct {
|
|||||||
httpClient *http.Client
|
httpClient *http.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *middleTelegramCaller) Dial(connID string, connOpts *mtproto.ConnectionOpts) (wrappers.WrapStreamReadWriteCloser, error) {
|
func (t *middleTelegramCaller) Dial(connID string, connOpts *mtproto.ConnectionOpts) (wrappers.StreamReadWriteCloser, error) {
|
||||||
dc := connOpts.DC
|
dc := connOpts.DC
|
||||||
if dc == 0 {
|
if dc == 0 {
|
||||||
dc = 1
|
dc = 1
|
||||||
@@ -150,7 +150,3 @@ func (t *middleTelegramCaller) call(url string) (*http.Response, error) {
|
|||||||
|
|
||||||
return t.httpClient.Do(req)
|
return t.httpClient.Do(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
middleTelegramProxyConfigSplitter = regexp.MustCompile(`\s+`)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Telegram interface {
|
type Telegram interface {
|
||||||
Dial(string, *mtproto.ConnectionOpts) (wrappers.WrapStreamReadWriteCloser, error)
|
Dial(string, *mtproto.ConnectionOpts) (wrappers.StreamReadWriteCloser, error)
|
||||||
Init(*mtproto.ConnectionOpts, wrappers.WrapStreamReadWriteCloser) (wrappers.Wrap, error)
|
Init(*mtproto.ConnectionOpts, wrappers.StreamReadWriteCloser) (wrappers.Wrap, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type baseTelegram struct {
|
type baseTelegram struct {
|
||||||
@@ -21,7 +21,7 @@ type baseTelegram struct {
|
|||||||
v6Addresses map[int16][]string
|
v6Addresses map[int16][]string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *baseTelegram) dial(dcIdx int16, connID string, proto mtproto.ConnectionProtocol) (wrappers.WrapStreamReadWriteCloser, error) {
|
func (b *baseTelegram) dial(dcIdx int16, connID string, proto mtproto.ConnectionProtocol) (wrappers.StreamReadWriteCloser, error) {
|
||||||
addrs := make([]string, 2)
|
addrs := make([]string, 2)
|
||||||
|
|
||||||
if proto&mtproto.ConnectionProtocolIPv6 != 0 {
|
if proto&mtproto.ConnectionProtocolIPv6 != 0 {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
type BlockCipher struct {
|
type BlockCipher struct {
|
||||||
buf *bytes.Buffer
|
buf *bytes.Buffer
|
||||||
|
|
||||||
conn WrapStreamReadWriteCloser
|
conn StreamReadWriteCloser
|
||||||
encryptor cipher.BlockMode
|
encryptor cipher.BlockMode
|
||||||
decryptor cipher.BlockMode
|
decryptor cipher.BlockMode
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ func (b *BlockCipher) Close() error {
|
|||||||
return b.conn.Close()
|
return b.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBlockCipher(conn WrapStreamReadWriteCloser, encryptor, decryptor cipher.BlockMode) WrapStreamReadWriteCloser {
|
func NewBlockCipher(conn StreamReadWriteCloser, encryptor, decryptor cipher.BlockMode) StreamReadWriteCloser {
|
||||||
return &BlockCipher{
|
return &BlockCipher{
|
||||||
buf: &bytes.Buffer{},
|
buf: &bytes.Buffer{},
|
||||||
conn: conn,
|
conn: conn,
|
||||||
|
|||||||
+1
-1
@@ -96,7 +96,7 @@ func (c *Conn) LogError(msg string, data ...interface{}) {
|
|||||||
c.logger.Errorw(msg, data...)
|
c.logger.Errorw(msg, data...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewConn(conn net.Conn, connID string, purpose ConnPurpose, publicIPv4, publicIPv6 net.IP) WrapStreamReadWriteCloser {
|
func NewConn(conn net.Conn, connID string, purpose ConnPurpose, publicIPv4, publicIPv6 net.IP) StreamReadWriteCloser {
|
||||||
logger := zap.S().With(
|
logger := zap.S().With(
|
||||||
"connection_id", connID,
|
"connection_id", connID,
|
||||||
"local_address", conn.LocalAddr(),
|
"local_address", conn.LocalAddr(),
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
type Ctx struct {
|
type Ctx struct {
|
||||||
cancel context.CancelFunc
|
cancel context.CancelFunc
|
||||||
conn WrapStreamReadWriteCloser
|
conn StreamReadWriteCloser
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ func (c *Ctx) Close() error {
|
|||||||
return c.conn.Close()
|
return c.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCtx(ctx context.Context, cancel context.CancelFunc, conn WrapStreamReadWriteCloser) WrapStreamReadWriteCloser {
|
func NewCtx(ctx context.Context, cancel context.CancelFunc, conn StreamReadWriteCloser) StreamReadWriteCloser {
|
||||||
return &Ctx{
|
return &Ctx{
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
cancel: cancel,
|
cancel: cancel,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type MTProtoAbridged struct {
|
type MTProtoAbridged struct {
|
||||||
conn WrapStreamReadWriteCloser
|
conn StreamReadWriteCloser
|
||||||
opts *mtproto.ConnectionOpts
|
opts *mtproto.ConnectionOpts
|
||||||
|
|
||||||
readCounter uint32
|
readCounter uint32
|
||||||
@@ -156,7 +156,7 @@ func (m *MTProtoAbridged) Close() error {
|
|||||||
return m.conn.Close()
|
return m.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMTProtoAbridged(conn WrapStreamReadWriteCloser, opts *mtproto.ConnectionOpts) WrapPacketReadWriteCloser {
|
func NewMTProtoAbridged(conn StreamReadWriteCloser, opts *mtproto.ConnectionOpts) PacketReadWriteCloser {
|
||||||
return &MTProtoAbridged{
|
return &MTProtoAbridged{
|
||||||
conn: conn,
|
conn: conn,
|
||||||
opts: opts,
|
opts: opts,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const (
|
|||||||
|
|
||||||
var emptyIP = [4]byte{0x00, 0x00, 0x00, 0x00}
|
var emptyIP = [4]byte{0x00, 0x00, 0x00, 0x00}
|
||||||
|
|
||||||
func NewMiddleProxyCipher(conn WrapStreamReadWriteCloser, req *rpc.NonceRequest, resp *rpc.NonceResponse, secret []byte) WrapStreamReadWriteCloser {
|
func NewMiddleProxyCipher(conn StreamReadWriteCloser, req *rpc.NonceRequest, resp *rpc.NonceResponse, secret []byte) StreamReadWriteCloser {
|
||||||
localAddr := conn.LocalAddr()
|
localAddr := conn.LocalAddr()
|
||||||
remoteAddr := conn.RemoteAddr()
|
remoteAddr := conn.RemoteAddr()
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const (
|
|||||||
var mtprotoFramePadding = []byte{0x04, 0x00, 0x00, 0x00}
|
var mtprotoFramePadding = []byte{0x04, 0x00, 0x00, 0x00}
|
||||||
|
|
||||||
type MTProtoFrame struct {
|
type MTProtoFrame struct {
|
||||||
conn WrapStreamReadWriteCloser
|
conn StreamReadWriteCloser
|
||||||
readSeqNo int32
|
readSeqNo int32
|
||||||
writeSeqNo int32
|
writeSeqNo int32
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,7 @@ func (m *MTProtoFrame) Close() error {
|
|||||||
return m.conn.Close()
|
return m.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMTProtoFrame(conn WrapStreamReadWriteCloser, seqNo int32) WrapPacketReadWriteCloser {
|
func NewMTProtoFrame(conn StreamReadWriteCloser, seqNo int32) PacketReadWriteCloser {
|
||||||
return &MTProtoFrame{
|
return &MTProtoFrame{
|
||||||
conn: conn,
|
conn: conn,
|
||||||
readSeqNo: seqNo,
|
readSeqNo: seqNo,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
const mtprotoIntermediateQuickAckLength = 0x80000000
|
const mtprotoIntermediateQuickAckLength = 0x80000000
|
||||||
|
|
||||||
type MTProtoIntermediate struct {
|
type MTProtoIntermediate struct {
|
||||||
conn WrapStreamReadWriteCloser
|
conn StreamReadWriteCloser
|
||||||
opts *mtproto.ConnectionOpts
|
opts *mtproto.ConnectionOpts
|
||||||
|
|
||||||
readCounter uint32
|
readCounter uint32
|
||||||
@@ -111,7 +111,7 @@ func (m *MTProtoIntermediate) Close() error {
|
|||||||
return m.conn.Close()
|
return m.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMTProtoIntermediate(conn WrapStreamReadWriteCloser, opts *mtproto.ConnectionOpts) WrapPacketReadWriteCloser {
|
func NewMTProtoIntermediate(conn StreamReadWriteCloser, opts *mtproto.ConnectionOpts) PacketReadWriteCloser {
|
||||||
return &MTProtoIntermediate{
|
return &MTProtoIntermediate{
|
||||||
conn: conn,
|
conn: conn,
|
||||||
opts: opts,
|
opts: opts,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type MTProtoProxy struct {
|
type MTProtoProxy struct {
|
||||||
conn WrapPacketReadWriteCloser
|
conn PacketReadWriteCloser
|
||||||
req *rpc.ProxyRequest
|
req *rpc.ProxyRequest
|
||||||
|
|
||||||
readCounter uint32
|
readCounter uint32
|
||||||
@@ -129,7 +129,7 @@ func (m *MTProtoProxy) Close() error {
|
|||||||
return m.conn.Close()
|
return m.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMTProtoProxy(conn WrapPacketReadWriteCloser, connOpts *mtproto.ConnectionOpts, adTag []byte) (WrapPacketReadWriteCloser, error) {
|
func NewMTProtoProxy(conn PacketReadWriteCloser, connOpts *mtproto.ConnectionOpts, adTag []byte) (PacketReadWriteCloser, error) {
|
||||||
req, err := rpc.NewProxyRequest(connOpts.ClientAddr, conn.LocalAddr(), connOpts, adTag)
|
req, err := rpc.NewProxyRequest(connOpts.ClientAddr, conn.LocalAddr(), connOpts, adTag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Annotate(err, "Cannot create new RPC proxy request")
|
return nil, errors.Annotate(err, "Cannot create new RPC proxy request")
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
type StreamCipher struct {
|
type StreamCipher struct {
|
||||||
encryptor cipher.Stream
|
encryptor cipher.Stream
|
||||||
decryptor cipher.Stream
|
decryptor cipher.Stream
|
||||||
conn WrapStreamReadWriteCloser
|
conn StreamReadWriteCloser
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *StreamCipher) Read(p []byte) (int, error) {
|
func (s *StreamCipher) Read(p []byte) (int, error) {
|
||||||
@@ -58,7 +58,7 @@ func (s *StreamCipher) Close() error {
|
|||||||
return s.conn.Close()
|
return s.conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewStreamCipher(conn WrapStreamReadWriteCloser, encryptor, decryptor cipher.Stream) WrapStreamReadWriteCloser {
|
func NewStreamCipher(conn StreamReadWriteCloser, encryptor, decryptor cipher.Stream) StreamReadWriteCloser {
|
||||||
return &StreamCipher{
|
return &StreamCipher{
|
||||||
conn: conn,
|
conn: conn,
|
||||||
encryptor: encryptor,
|
encryptor: encryptor,
|
||||||
|
|||||||
+21
-21
@@ -15,74 +15,74 @@ type Wrap interface {
|
|||||||
RemoteAddr() *net.TCPAddr
|
RemoteAddr() *net.TCPAddr
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapWriter interface {
|
type Writer interface {
|
||||||
io.Writer
|
io.Writer
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapCloser interface {
|
type Closer interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapWriteCloser interface {
|
type WriteCloser interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
WrapWriter
|
Writer
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapStreamReader interface {
|
type StreamReader interface {
|
||||||
io.Reader
|
io.Reader
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapStreamReadCloser interface {
|
type StreamReadCloser interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
WrapStreamReader
|
StreamReader
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapStreamReadWriter interface {
|
type StreamReadWriter interface {
|
||||||
io.Writer
|
io.Writer
|
||||||
WrapStreamReader
|
StreamReader
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapStreamWriteCloser interface {
|
type StreamWriteCloser interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
io.Writer
|
io.Writer
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapStreamReadWriteCloser interface {
|
type StreamReadWriteCloser interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
WrapStreamReadWriter
|
StreamReadWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapPacketReader interface {
|
type PacketReader interface {
|
||||||
Read() ([]byte, error)
|
Read() ([]byte, error)
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapPacketWriter interface {
|
type PacketWriter interface {
|
||||||
io.Writer
|
io.Writer
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapPacketReadWriter interface {
|
type PacketReadWriter interface {
|
||||||
io.Writer
|
io.Writer
|
||||||
WrapPacketReader
|
PacketReader
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapBlockReadCloser interface {
|
type BlockReadCloser interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
WrapPacketReader
|
PacketReader
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapPacketWriteCloser interface {
|
type PacketWriteCloser interface {
|
||||||
io.Writer
|
io.Writer
|
||||||
io.Closer
|
io.Closer
|
||||||
Wrap
|
Wrap
|
||||||
}
|
}
|
||||||
|
|
||||||
type WrapPacketReadWriteCloser interface {
|
type PacketReadWriteCloser interface {
|
||||||
io.Closer
|
io.Closer
|
||||||
WrapPacketReadWriter
|
PacketReadWriter
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user