Log proxt req header flags

This commit is contained in:
9seconds
2018-07-08 18:43:27 +03:00
parent 8b178e2340
commit 6ea4f3dbc2
3 changed files with 37 additions and 4 deletions
+32 -1
View File
@@ -1,6 +1,9 @@
package rpc package rpc
import "encoding/binary" import (
"encoding/binary"
"strings"
)
type proxyRequestFlags uint32 type proxyRequestFlags uint32
@@ -22,3 +25,31 @@ func (r proxyRequestFlags) Bytes() []byte {
return converted return converted
} }
func (r proxyRequestFlags) String() string {
flags := make([]string, 0, 7)
if r&proxyRequestFlagsHasAdTag != 0 {
flags = append(flags, "HAS_AD_TAG")
}
if r&proxyRequestFlagsEncrypted != 0 {
flags = append(flags, "ENCRYPTED")
}
if r&proxyRequestFlagsMagic != 0 {
flags = append(flags, "MAGIC")
}
if r&proxyRequestFlagsExtMode2 != 0 {
flags = append(flags, "EXT_MODE_2")
}
if r&proxyRequestFlagsIntermediate != 0 {
flags = append(flags, "INTERMEDIATE")
}
if r&proxyRequestFlagsAbdridged != 0 {
flags = append(flags, "ABRIDGED")
}
if r&proxyRequestFlagsQuickAck != 0 {
flags = append(flags, "QUICK_ACK")
}
return strings.Join(flags, " | ")
}
+3 -2
View File
@@ -4,6 +4,7 @@ import (
"bytes" "bytes"
"crypto/rand" "crypto/rand"
"encoding/binary" "encoding/binary"
"fmt"
"net" "net"
"github.com/juju/errors" "github.com/juju/errors"
@@ -20,7 +21,7 @@ type ProxyRequest struct {
Options *mtproto.ConnectionOpts Options *mtproto.ConnectionOpts
} }
func (r *ProxyRequest) MakeHeader(message []byte) *bytes.Buffer { func (r *ProxyRequest) MakeHeader(message []byte) (*bytes.Buffer, fmt.Stringer) {
bufferLength := len(TagProxyRequest) + bufferLength := len(TagProxyRequest) +
4 + // len(flags) 4 + // len(flags)
len(r.ConnectionID) + len(r.ConnectionID) +
@@ -55,7 +56,7 @@ func (r *ProxyRequest) MakeHeader(message []byte) *bytes.Buffer {
buf.Write(r.ADTag) buf.Write(r.ADTag)
buf.Write(make([]byte, (4-buf.Len()%4)%4)) buf.Write(make([]byte, (4-buf.Len()%4)%4))
return buf return buf, flags
} }
func NewProxyRequest(clientAddr, ownAddr *net.TCPAddr, opts *mtproto.ConnectionOpts, adTag []byte) (*ProxyRequest, error) { func NewProxyRequest(clientAddr, ownAddr *net.TCPAddr, opts *mtproto.ConnectionOpts, adTag []byte) (*ProxyRequest, error) {
+2 -1
View File
@@ -107,7 +107,7 @@ func (m *MTProtoProxy) Write(p []byte) (int, error) {
"quick_ack", m.req.Options.ReadHacks.QuickAck, "quick_ack", m.req.Options.ReadHacks.QuickAck,
) )
header := m.req.MakeHeader(p) header, flags := m.req.MakeHeader(p)
if ce := m.logger.Desugar().Check(zap.DebugLevel, "RPC_PROXY_REQ header"); ce != nil { if ce := m.logger.Desugar().Check(zap.DebugLevel, "RPC_PROXY_REQ header"); ce != nil {
ce.Write( ce.Write(
zap.Int("length", len(p)), zap.Int("length", len(p)),
@@ -115,6 +115,7 @@ func (m *MTProtoProxy) Write(p []byte) (int, error) {
zap.Bool("simple_ack", m.req.Options.ReadHacks.QuickAck), zap.Bool("simple_ack", m.req.Options.ReadHacks.QuickAck),
zap.Bool("quick_ack", m.req.Options.ReadHacks.SimpleAck), zap.Bool("quick_ack", m.req.Options.ReadHacks.SimpleAck),
zap.String("header", fmt.Sprintf("%v", header.Bytes())), zap.String("header", fmt.Sprintf("%v", header.Bytes())),
zap.Stringer("flags", flags),
) )
} }
header.Write(p) header.Write(p)