Documentation ¶
Overview ¶
Package dcs contains Telegram DCs list and some helpers.
Index ¶
- func FindDCs(opts []tg.DCOption, dcID int, preferIPv6 bool) []tg.DCOption
- func FindPrimaryDCs(opts []tg.DCOption, dcID int, preferIPv6 bool) []tg.DCOption
- func ProdDCs() []tg.DCOption
- func StagingDCs() []tg.DCOption
- type DialFunc
- type MTProxyOptions
- type PlainOptions
- type Protocol
- type Resolver
- type WebsocketOptions
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FindPrimaryDCs ¶
FindPrimaryDCs searches new primary DC from given config. Unlike FindDC, it filters CDNs and MediaOnly servers, returns error if not found.
Types ¶
type DialFunc ¶ added in v0.33.0
DialFunc connects to the address on the named network.
Example ¶
package main import ( "context" "fmt" "time" "golang.org/x/net/proxy" "github.com/gotd/td/telegram" "github.com/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.PlainResolver(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/gotd/td/telegram" "github.com/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.PlainResolver(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 // Network to use. Defaults to "tcp". Network string // PreferIPv6 gives IPv6 DCs higher precedence. // Default is to prefer IPv4 DCs over IPv6. PreferIPv6 bool }
PlainOptions is plain resolver creation options.
type Protocol ¶ added in v0.33.0
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, dcOptions []tg.DCOption) (transport.Conn, error) MediaOnly(ctx context.Context, dc int, dcOptions []tg.DCOption) (transport.Conn, error) CDN(ctx context.Context, dc int, dcOptions []tg.DCOption) (transport.Conn, error) }
Resolver resolves DC and creates transport MTProto connection.
func MTProxyResolver ¶
func MTProxyResolver(addr string, secret []byte, opts MTProxyOptions) (Resolver, error)
MTProxyResolver creates MTProxy obfuscated DC resolver.
See https://core.telegram.org/mtproto/mtproto-transports#transport-obfuscation.
func PlainResolver ¶
func PlainResolver(opts PlainOptions) Resolver
PlainResolver creates plain DC resolver.
func WebsocketResolver ¶ added in v0.39.0
func WebsocketResolver(opts WebsocketOptions) Resolver
WebsocketResolver creates Websocket DC resolver.
type WebsocketOptions ¶ added in v0.39.0
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 // Domain resolves connection URL by DC ID. Domain func(dc int) (string, error) }
WebsocketOptions is Websocket resolver creation options.