mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 21:44:03 +03:00
FILE / ScuroNeko/mtg
mtproto/rpc/rpc_proxy_flags.go
Исходный файл и его история в репозитории.
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package rpc
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
|
|
"github.com/9seconds/mtg/mtproto"
|
|
)
|
|
|
|
type RPCProxyRequestFlags uint32
|
|
|
|
const (
|
|
RPCProxyRequestFlagsHasAdTag RPCProxyRequestFlags = 0x8
|
|
RPCProxyRequestFlagsEncrypted = 0x2
|
|
RPCProxyRequestFlagsMagic = 0x1000
|
|
RPCProxyRequestFlagsExtMode2 = 0x20000
|
|
RPCProxyRequestFlagsIntermediate = 0x20000000
|
|
RPCProxyRequestFlagsAbdridged = 0x40000000
|
|
RPCProxyRequestFlagsQuickAck = 0x80000000
|
|
)
|
|
|
|
var rpcProxyRequestFlagsEncryptedPrefix [8]byte
|
|
|
|
func (r RPCProxyRequestFlags) Bytes() []byte {
|
|
converted := make([]byte, 4)
|
|
binary.LittleEndian.PutUint32(converted, uint32(r))
|
|
|
|
return converted
|
|
}
|
|
|
|
func NewRPCRproxyRequestFlags(connectionType mtproto.ConnectionType, quickAck bool, message []byte) RPCProxyRequestFlags {
|
|
flags := RPCProxyRequestFlagsHasAdTag
|
|
flags |= RPCProxyRequestFlagsMagic
|
|
flags |= RPCProxyRequestFlagsExtMode2
|
|
|
|
switch connectionType {
|
|
case mtproto.ConnectionTypeAbridged:
|
|
flags |= RPCProxyRequestFlagsAbdridged
|
|
case mtproto.ConnectionTypeIntermediate:
|
|
flags |= RPCProxyRequestFlagsIntermediate
|
|
}
|
|
|
|
if quickAck {
|
|
flags |= RPCProxyRequestFlagsQuickAck
|
|
}
|
|
if bytes.HasPrefix(message, rpcProxyRequestFlagsEncryptedPrefix[:]) {
|
|
flags |= RPCProxyRequestFlagsEncrypted
|
|
}
|
|
|
|
return flags
|
|
}
|