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
})
}
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
})
}
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.
Dialer *websocket.Dialer
// 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.