Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

proxy_flags.go 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package rpc
  2. import (
  3. "encoding/binary"
  4. "strings"
  5. )
  6. type proxyRequestFlags uint32
  7. const (
  8. proxyRequestFlagsHasAdTag proxyRequestFlags = 0x8
  9. proxyRequestFlagsEncrypted proxyRequestFlags = 0x2
  10. proxyRequestFlagsMagic proxyRequestFlags = 0x1000
  11. proxyRequestFlagsExtMode2 proxyRequestFlags = 0x20000
  12. proxyRequestFlagsIntermediate proxyRequestFlags = 0x20000000
  13. proxyRequestFlagsAbdridged proxyRequestFlags = 0x40000000
  14. proxyRequestFlagsQuickAck proxyRequestFlags = 0x80000000
  15. proxyRequestFlagsPad proxyRequestFlags = 0x8000000
  16. )
  17. var proxyRequestFlagsEncryptedPrefix [8]byte
  18. func (r proxyRequestFlags) Bytes() []byte {
  19. converted := make([]byte, 4)
  20. binary.LittleEndian.PutUint32(converted, uint32(r))
  21. return converted
  22. }
  23. func (r proxyRequestFlags) String() string {
  24. flags := make([]string, 0, 7)
  25. if r&proxyRequestFlagsHasAdTag != 0 {
  26. flags = append(flags, "HAS_AD_TAG")
  27. }
  28. if r&proxyRequestFlagsEncrypted != 0 {
  29. flags = append(flags, "ENCRYPTED")
  30. }
  31. if r&proxyRequestFlagsMagic != 0 {
  32. flags = append(flags, "MAGIC")
  33. }
  34. if r&proxyRequestFlagsExtMode2 != 0 {
  35. flags = append(flags, "EXT_MODE_2")
  36. }
  37. if r&proxyRequestFlagsIntermediate != 0 {
  38. flags = append(flags, "INTERMEDIATE")
  39. }
  40. if r&proxyRequestFlagsAbdridged != 0 {
  41. flags = append(flags, "ABRIDGED")
  42. }
  43. if r&proxyRequestFlagsQuickAck != 0 {
  44. flags = append(flags, "QUICK_ACK")
  45. }
  46. if r&proxyRequestFlagsPad != 0 {
  47. flags = append(flags, "PAD")
  48. }
  49. return strings.Join(flags, " | ")
  50. }