mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 21:34:02 +03:00
Log proxt req header flags
This commit is contained in:
@@ -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, " | ")
|
||||||
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user