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 ¶ added in v0.53.0
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 ¶ added in v0.53.0
ParseDNSConfig parses tg.HelpConfigSimple from TXT response.
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.Plain(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.Plain(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
// 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 ¶ 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, 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 ¶ added in v0.41.0
func DefaultResolver() Resolver
DefaultResolver returns default DC resolver for current platform.
func MTProxy ¶ added in v0.41.0
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 Plain ¶ added in v0.41.0
func Plain(opts PlainOptions) Resolver
Plain creates plain DC resolver.
func Websocket ¶ added in v0.41.0
func Websocket(opts WebsocketOptions) Resolver
Websocket 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
}
WebsocketOptions is Websocket resolver creation options.