Documentation ¶
Overview ¶
Package dcs contains Telegram DCs list and some helpers.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type DNSConfig ¶
type DNSConfig struct { // Date field of HelpConfigSimple. Date int // Expires field of HelpConfigSimple. Expires int // Rules field of HelpConfigSimple. Rules []tg.AccessPointRule }
DNSConfig is DC connection config obtained from DNS.
func ParseDNSConfig ¶
ParseDNSConfig parses tg.HelpConfigSimple from TXT response.
type DialFunc ¶
DialFunc connects to the address on the named network.
Example ¶
package main import ( "context" "fmt" "time" "golang.org/x/net/proxy" "github.com/voyager-hang/gotd-td/telegram" "github.com/voyager-hang/gotd-td/telegram/dcs" ) func main() { // Dial using proxy from environment. // Creating connection. ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() client := telegram.NewClient(1, "appHash", telegram.Options{ Resolver: dcs.Plain(dcs.PlainOptions{Dial: proxy.Dial}), }) _ = client.Run(ctx, func(ctx context.Context) error { fmt.Println("Started") return nil }) }
Output:
Example (Dialer) ¶
package main import ( "context" "fmt" "time" "golang.org/x/net/proxy" "github.com/voyager-hang/gotd-td/telegram" "github.com/voyager-hang/gotd-td/telegram/dcs" ) func main() { // Dial using SOCKS5 proxy. sock5, _ := proxy.SOCKS5("tcp", "IP:PORT", &proxy.Auth{ User: "YOURUSERNAME", Password: "YOURPASSWORD", }, proxy.Direct) dc := sock5.(proxy.ContextDialer) // Creating connection. ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() client := telegram.NewClient(1, "appHash", telegram.Options{ Resolver: dcs.Plain(dcs.PlainOptions{ Dial: dc.DialContext, }), }) _ = client.Run(ctx, func(ctx context.Context) error { fmt.Println("Started") return nil }) }
Output:
type MTProxyOptions ¶
type MTProxyOptions struct { // Dial specifies the dial function for creating unencrypted TCP connections. // If Dial is nil, then the resolver dials using package net. Dial DialFunc // Network to use. Defaults to "tcp" Network string // Random source for MTProxy obfuscator. Rand io.Reader }
MTProxyOptions is MTProxy resolver creation options.
type PlainOptions ¶
type PlainOptions struct { // Protocol is the transport protocol to use. Defaults to intermediate. Protocol Protocol // Dial specifies the dial function for creating unencrypted TCP connections. // If Dial is nil, then the resolver dials using package net. Dial DialFunc // Random source for TCPObfuscated DCs. Rand io.Reader // Network to use. Defaults to "tcp". Network string // NoObfuscated denotes to filter out TCP Obfuscated Only DCs. NoObfuscated bool // PreferIPv6 gives IPv6 DCs higher precedence. // Default is to prefer IPv4 DCs over IPv6. PreferIPv6 bool }
PlainOptions is plain resolver creation options.
type Protocol ¶
type Protocol interface { Codec() transport.Codec Handshake(conn net.Conn) (transport.Conn, error) }
Protocol is MTProto transport protocol.
type Resolver ¶
type Resolver interface { Primary(ctx context.Context, dc int, list List) (transport.Conn, error) MediaOnly(ctx context.Context, dc int, list List) (transport.Conn, error) CDN(ctx context.Context, dc int, list List) (transport.Conn, error) }
Resolver resolves DC and creates transport MTProto connection.
func DefaultResolver ¶
func DefaultResolver() Resolver
DefaultResolver returns default DC resolver for current platform.
func MTProxy ¶
func MTProxy(addr string, secret []byte, opts MTProxyOptions) (Resolver, error)
MTProxy creates MTProxy obfuscated DC resolver.
See https://core.telegram.org/mtproto/mtproto-transports#transport-obfuscation.
func Websocket ¶
func Websocket(opts WebsocketOptions) Resolver
Websocket creates Websocket DC resolver.
type WebsocketOptions ¶
type WebsocketOptions struct { // Dialer specifies the websocket dialer. // If Dialer is nil, then the resolver dials using websocket.DefaultDialer. DialOptions *websocket.DialOptions // Random source for MTProxy obfuscator. Rand io.Reader }
WebsocketOptions is Websocket resolver creation options.