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
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

proxy_network.go 755B

123456789101112131415161718192021222324252627282930313233343536
  1. package network
  2. import (
  3. "context"
  4. "fmt"
  5. "net/url"
  6. "github.com/9seconds/mtg/v2/essentials"
  7. "golang.org/x/net/proxy"
  8. )
  9. type proxyNetwork struct {
  10. Network
  11. client proxy.ContextDialer
  12. }
  13. func (p proxyNetwork) DialContext(ctx context.Context, network, address string) (essentials.Conn, error) {
  14. conn, err := p.client.DialContext(ctx, network, address)
  15. if err != nil {
  16. return nil, err
  17. }
  18. return essentials.WrapNetConn(conn), nil
  19. }
  20. func NewProxyNetwork(base Network, proxyURL *url.URL) (*proxyNetwork, error) {
  21. socks, err := proxy.FromURL(proxyURL, base.NativeDialer())
  22. if err != nil {
  23. return nil, fmt.Errorf("cannot build proxy dialer: %w", err)
  24. }
  25. return &proxyNetwork{
  26. Network: base,
  27. client: socks.(proxy.ContextDialer),
  28. }, nil
  29. }