Remove wrap prefix

This commit is contained in:
9seconds
2018-07-08 08:16:21 +03:00
parent a0ba89b105
commit 388f7a23d3
17 changed files with 59 additions and 66 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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")
+2 -6
View File
@@ -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+`)
}
+3 -3
View File
@@ -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 {
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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,
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -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()
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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,
+2 -2
View File
@@ -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")
+2 -2
View File
@@ -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
View File
@@ -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
} }