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
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package wrappers
  2. import (
  3. "io"
  4. "go.uber.org/zap"
  5. )
  6. // LogReadWriteCloser adds additional logging for reading/writing. All
  7. // logging is performed for debug mode only.
  8. type LogReadWriteCloser struct {
  9. conn io.ReadWriteCloser
  10. logger *zap.SugaredLogger
  11. sockid string
  12. name string
  13. }
  14. // Read reads from connection
  15. func (l *LogReadWriteCloser) Read(p []byte) (n int, err error) {
  16. n, err = l.conn.Read(p)
  17. l.logger.Debugw("Finish reading", "name", l.name, "socketid", l.sockid, "nbytes", n, "error", err)
  18. return
  19. }
  20. // Write writes into connection.
  21. func (l *LogReadWriteCloser) Write(p []byte) (n int, err error) {
  22. n, err = l.conn.Write(p)
  23. l.logger.Debugw("Finish writing", "name", l.name, "socketid", l.sockid, "nbytes", n, "error", err)
  24. return
  25. }
  26. // Close closes underlying connection.
  27. func (l *LogReadWriteCloser) Close() error {
  28. err := l.conn.Close()
  29. l.logger.Debugw("Finish closing socket", "name", l.name, "socketid", l.sockid, "error", err)
  30. return err
  31. }
  32. // NewLogRWC wraps ReadWriteCloser with logger calls.
  33. func NewLogRWC(conn io.ReadWriteCloser, logger *zap.SugaredLogger, sockid string, name string) io.ReadWriteCloser {
  34. return &LogReadWriteCloser{
  35. conn: conn,
  36. logger: logger,
  37. sockid: sockid,
  38. name: name,
  39. }
  40. }