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.

init.go 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package record
  2. import "fmt"
  3. const TLSMaxRecordSize = 65535 // max uint16
  4. type Type uint8
  5. const (
  6. TypeChangeCipherSpec Type = 0x14
  7. TypeHandshake Type = 0x16
  8. TypeApplicationData Type = 0x17
  9. )
  10. func (t Type) String() string {
  11. switch t {
  12. case TypeChangeCipherSpec:
  13. return "changeCipher(0x14)"
  14. case TypeHandshake:
  15. return "handshake(0x16)"
  16. case TypeApplicationData:
  17. return "applicationData(0x17)"
  18. }
  19. return fmt.Sprintf("unknown(%#x)", byte(t))
  20. }
  21. func (t Type) Valid() error {
  22. switch t {
  23. case TypeChangeCipherSpec, TypeHandshake, TypeApplicationData:
  24. return nil
  25. }
  26. return fmt.Errorf("unknown type %#x", byte(t))
  27. }
  28. type Version uint16
  29. const (
  30. Version10 Version = 769 // 0x03 0x01
  31. Version11 Version = 770 // 0x03 0x02
  32. Version12 Version = 771 // 0x03 0x03
  33. Version13 Version = 772 // 0x03 0x04
  34. )
  35. func (v Version) String() string {
  36. switch v {
  37. case Version10:
  38. return "tls1.0"
  39. case Version11:
  40. return "tls1.1"
  41. case Version12:
  42. return "tls1.2"
  43. case Version13:
  44. return "tls1.3"
  45. }
  46. return fmt.Sprintf("tls(%d)", uint16(v))
  47. }
  48. func (v Version) Valid() error {
  49. switch v {
  50. case Version10, Version11, Version12, Version13:
  51. return nil
  52. }
  53. return fmt.Errorf("unknown version %d", uint16(v))
  54. }