FILE / ScuroNeko/mtg

client/direct.go

Исходный файл и его история в репозитории.
FILE a2d0210780592eb8632ec443ec932070084a7dd2
Files
mtg/client/direct.go
T
2018-06-19 10:22:31 +03:00

31 lines
830 B
Go

package client
import (
"io"
"net"
"github.com/juju/errors"
"github.com/9seconds/mtg/config"
"github.com/9seconds/mtg/obfuscated2"
"github.com/9seconds/mtg/wrappers"
)
// DirectInit initializes client to access Telegram bypassing middleproxies.
func DirectInit(conn net.Conn, conf *config.Config) (int16, io.ReadWriteCloser, error) {
socket := wrappers.NewTimeoutRWC(conn, conf.TimeoutRead, conf.TimeoutWrite)
frame, err := obfuscated2.ExtractFrame(socket)
if err != nil {
return 0, nil, errors.Annotate(err, "Cannot extract frame")
}
obfs2, dc, err := obfuscated2.ParseObfuscated2ClientFrame(conf.Secret, frame)
if err != nil {
return 0, nil, errors.Annotate(err, "Cannot parse obfuscated frame")
}
socket = wrappers.NewStreamCipherRWC(socket, obfs2.Encryptor, obfs2.Decryptor)
return dc, socket, nil
}