Update to go 1.19

This commit is contained in:
9seconds
2022-08-09 17:41:59 +03:00
parent 9d67414db6
commit f48156814b
60 changed files with 260 additions and 260 deletions
+18 -16
View File
@@ -7,7 +7,6 @@ import (
"fmt"
"hash/crc32"
"io"
"io/ioutil"
"net"
"github.com/9seconds/mtg/conntypes"
@@ -28,11 +27,14 @@ var mtprotoFramePadding = []byte{0x04, 0x00, 0x00, 0x00}
//
// MSGLEN is the length of the message + len of seqno and msglen.
// SEQNO is the number of frame in the receive/send sequence. If client
// sends a message with SeqNo 18, it has to receive message with SeqNo 18.
//
// sends a message with SeqNo 18, it has to receive message with SeqNo 18.
//
// MSG is the data which has to be written
// CRC32 is the CRC32 checksum of MSGLEN + SEQNO + MSG
// PADDING is custom padding schema to complete frame length to such that
// len(frame) % 16 == 0
//
// len(frame) % 16 == 0
type wrapperMtprotoFrame struct {
parent conntypes.StreamReadWriteCloser
logger *zap.SugaredLogger
@@ -40,7 +42,7 @@ type wrapperMtprotoFrame struct {
writeSeqNo int32
}
func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funlen, cyclop
func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { //nolint: funlen, cyclop
buf := &bytes.Buffer{}
sum := crc32.NewIEEE()
@@ -50,7 +52,7 @@ func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funl
buf.Reset()
sum.Reset()
if _, err := io.CopyN(writer, w.parent, 4); err != nil { // nolint: gomnd
if _, err := io.CopyN(writer, w.parent, 4); err != nil { //nolint: gomnd
return nil, fmt.Errorf("cannot read frame padding: %w", err)
}
@@ -72,23 +74,23 @@ func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funl
buf.Reset()
if _, err := io.CopyN(writer, w.parent, int64(messageLength)-4-4); err != nil { // nolint: gomnd
if _, err := io.CopyN(writer, w.parent, int64(messageLength)-4-4); err != nil { //nolint: gomnd
return nil, fmt.Errorf("cannot read the message frame: %w", err)
}
var seqNo int32
binary.Read(buf, binary.LittleEndian, &seqNo) // nolint: errcheck
binary.Read(buf, binary.LittleEndian, &seqNo) //nolint: errcheck
if seqNo != w.readSeqNo {
return nil, fmt.Errorf("unexpected sequence number %d (wait for %d)", seqNo, w.readSeqNo)
}
data, _ := ioutil.ReadAll(buf)
data, _ := io.ReadAll(buf)
buf.Reset()
// write to buf, not to writer. This is because we are going to fetch
// crc32 checksum.
if _, err := io.CopyN(buf, w.parent, 4); err != nil { // nolint: gomnd
if _, err := io.CopyN(buf, w.parent, 4); err != nil { //nolint: gomnd
return nil, fmt.Errorf("cannot read checksum: %w", err)
}
@@ -109,18 +111,18 @@ func (w *wrapperMtprotoFrame) Read() (conntypes.Packet, error) { // nolint: funl
}
func (w *wrapperMtprotoFrame) Write(p conntypes.Packet) error {
messageLength := 4 + 4 + len(p) + 4 // nolint: gomnd
messageLength := 4 + 4 + len(p) + 4 //nolint: gomnd
paddingLength := (aes.BlockSize - messageLength%aes.BlockSize) % aes.BlockSize
buf := &bytes.Buffer{}
binary.Write(buf, binary.LittleEndian, uint32(messageLength)) // nolint: errcheck
binary.Write(buf, binary.LittleEndian, w.writeSeqNo) // nolint: errcheck
binary.Write(buf, binary.LittleEndian, uint32(messageLength)) //nolint: errcheck
binary.Write(buf, binary.LittleEndian, w.writeSeqNo) //nolint: errcheck
buf.Write(p)
checksum := crc32.ChecksumIEEE(buf.Bytes())
binary.Write(buf, binary.LittleEndian, checksum) // nolint: errcheck
buf.Write(bytes.Repeat(mtprotoFramePadding, paddingLength/4)) // nolint: gomnd
binary.Write(buf, binary.LittleEndian, checksum) //nolint: errcheck
buf.Write(bytes.Repeat(mtprotoFramePadding, paddingLength/4)) //nolint: gomnd
w.logger.Debugw("Write MTProto frame",
"length", len(p),
@@ -132,11 +134,11 @@ func (w *wrapperMtprotoFrame) Write(p conntypes.Packet) error {
_, err := w.parent.Write(buf.Bytes())
return err // nolint: wrapcheck
return err //nolint: wrapcheck
}
func (w *wrapperMtprotoFrame) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperMtprotoFrame) Conn() net.Conn {
+4 -4
View File
@@ -39,9 +39,9 @@ func (w *wrapperClientAbridged) Read(acks *conntypes.ConnectionAcks) (conntypes.
}
if msgLength == clientAbridgedSmallPacketLength {
buf.Grow(3) // nolint: gomnd
buf.Grow(3) //nolint: gomnd
if _, err := io.CopyN(&buf, w.parent, 3); err != nil { // nolint: gomnd
if _, err := io.CopyN(&buf, w.parent, 3); err != nil { //nolint: gomnd
return nil, fmt.Errorf("cannot read correct message length: %w", err)
}
@@ -75,7 +75,7 @@ func (w *wrapperClientAbridged) Write(packet conntypes.Packet, acks *conntypes.C
return nil
}
packetLength := len(packet) / 4 // nolint: gomnd
packetLength := len(packet) / 4 //nolint: gomnd
switch {
case packetLength < clientAbridgedSmallPacketLength:
@@ -104,7 +104,7 @@ func (w *wrapperClientAbridged) Write(packet conntypes.Packet, acks *conntypes.C
}
func (w *wrapperClientAbridged) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperClientAbridged) Conn() net.Conn {
+3 -3
View File
@@ -20,9 +20,9 @@ type wrapperClientIntermediate struct {
func (w *wrapperClientIntermediate) Read(acks *conntypes.ConnectionAcks) (conntypes.Packet, error) {
buf := bytes.Buffer{}
buf.Grow(4) // nolint: gomnd
buf.Grow(4) //nolint: gomnd
if _, err := io.CopyN(&buf, w.parent, 4); err != nil { // nolint: gomnd
if _, err := io.CopyN(&buf, w.parent, 4); err != nil { //nolint: gomnd
return nil, fmt.Errorf("cannot read message length: %w", err)
}
@@ -63,7 +63,7 @@ func (w *wrapperClientIntermediate) Write(packet conntypes.Packet, acks *conntyp
}
func (w *wrapperClientIntermediate) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperClientIntermediate) Conn() net.Conn {
@@ -20,7 +20,7 @@ func (w *wrapperClientIntermediateSecure) Read(acks *conntypes.ConnectionAcks) (
return nil, err
}
length := len(data) - (len(data) % 4) // nolint: gomnd
length := len(data) - (len(data) % 4) //nolint: gomnd
return data[:length], nil
}
@@ -35,11 +35,11 @@ func (w *wrapperClientIntermediateSecure) Write(packet conntypes.Packet, acks *c
}
buf := &bytes.Buffer{}
paddingLength := rand.Intn(4) // nolint: gosec, gomnd
paddingLength := rand.Intn(4) //nolint: gosec, gomnd
buf.Grow(4 + len(packet) + paddingLength)
binary.Write(buf, binary.LittleEndian, uint32(len(packet)+paddingLength)) // nolint: errcheck
binary.Write(buf, binary.LittleEndian, uint32(len(packet)+paddingLength)) //nolint: errcheck
buf.Write(packet)
buf.Write(make([]byte, paddingLength))
+2 -2
View File
@@ -42,11 +42,11 @@ func (w *wrapperProxy) Write(packet conntypes.Packet, acks *conntypes.Connection
buf.Write(rpc.ProxyRequestProxyTag)
buf.WriteByte(byte(len(config.C.AdTag)))
buf.Write(config.C.AdTag)
buf.Write(make([]byte, (4-buf.Len()%4)%4)) // nolint: gomnd
buf.Write(make([]byte, (4-buf.Len()%4)%4)) //nolint: gomnd
buf.Grow(len(packet))
buf.Write(packet)
return w.proxy.Write(buf.Bytes()) // nolint: wrapcheck
return w.proxy.Write(buf.Bytes()) //nolint: wrapcheck
}
func (w *wrapperProxy) Read(acks *conntypes.ConnectionAcks) (conntypes.Packet, error) {
+3 -3
View File
@@ -20,7 +20,7 @@ func (w *wrapperPing) Read(p []byte) (int, error) {
}
}
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperPing) Write(p []byte) (int, error) {
@@ -32,11 +32,11 @@ func (w *wrapperPing) Write(p []byte) (int, error) {
}
}
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperPing) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func NewPing(ctx context.Context, parent io.ReadWriteCloser, channelPing chan<- struct{}) io.ReadWriteCloser {
+3 -3
View File
@@ -26,7 +26,7 @@ func (w *wrapperBlockCipher) Write(p []byte) (int, error) {
return 0, err
}
return w.parent.Write(encrypted) // nolint: wrapcheck
return w.parent.Write(encrypted) //nolint: wrapcheck
}
func (w *wrapperBlockCipher) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
@@ -35,7 +35,7 @@ func (w *wrapperBlockCipher) WriteTimeout(p []byte, timeout time.Duration) (int,
return 0, err
}
return w.parent.WriteTimeout(encrypted, timeout) // nolint: wrapcheck
return w.parent.WriteTimeout(encrypted, timeout) //nolint: wrapcheck
}
func (w *wrapperBlockCipher) encrypt(p []byte) ([]byte, error) {
@@ -50,7 +50,7 @@ func (w *wrapperBlockCipher) encrypt(p []byte) ([]byte, error) {
}
func (w *wrapperBlockCipher) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperBlockCipher) Conn() net.Conn {
+1 -1
View File
@@ -33,7 +33,7 @@ func (b *bufferedReader) ReadTimeout(p []byte, _ time.Duration) (int, error) {
func (b *bufferedReader) flush(p []byte) (int, error) {
if b.buf.Len() > len(p) {
return b.buf.Read(p) // nolint: wrapcheck
return b.buf.Read(p) //nolint: wrapcheck
}
sizeToReturn := b.buf.Len()
+6 -6
View File
@@ -43,7 +43,7 @@ func (w *wrapperConn) Write(p []byte) (int, error) {
w.Close()
}
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperConn) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
@@ -64,13 +64,13 @@ func (w *wrapperConn) Read(p []byte) (int, error) {
w.Close()
}
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperConn) Close() error {
w.logger.Debugw("Close connection")
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperConn) Conn() net.Conn {
@@ -93,9 +93,9 @@ func newConn(parent net.Conn,
connID conntypes.ConnID,
purpose connPurpose,
) conntypes.StreamReadWriteCloser {
localAddr := *parent.LocalAddr().(*net.TCPAddr) // nolint: forcetypeassert
localAddr := *parent.LocalAddr().(*net.TCPAddr) //nolint: forcetypeassert
if parent.RemoteAddr().(*net.TCPAddr).IP.To4() != nil { // nolint: forcetypeassert
if parent.RemoteAddr().(*net.TCPAddr).IP.To4() != nil { //nolint: forcetypeassert
if config.C.PublicIPv4.IP != nil {
localAddr.IP = config.C.PublicIPv4.IP
}
@@ -118,7 +118,7 @@ func newConn(parent net.Conn,
parent: parent,
connID: connID,
logger: logger,
remoteAddr: parent.RemoteAddr().(*net.TCPAddr), // nolint: forcetypeassert
remoteAddr: parent.RemoteAddr().(*net.TCPAddr), //nolint: forcetypeassert
localAddr: &localAddr,
}
}
+5 -5
View File
@@ -23,7 +23,7 @@ func (w *wrapperCtx) WriteTimeout(p []byte, timeout time.Duration) (int, error)
return 0, fmt.Errorf("cannot write because context was closed: %w", w.ctx.Err())
default:
return w.parent.WriteTimeout(p, timeout) // nolint: wrapcheck
return w.parent.WriteTimeout(p, timeout) //nolint: wrapcheck
}
}
@@ -34,7 +34,7 @@ func (w *wrapperCtx) Write(p []byte) (int, error) {
return 0, fmt.Errorf("cannot write because context was closed: %w", w.ctx.Err())
default:
return w.parent.Write(p) // nolint: wrapcheck
return w.parent.Write(p) //nolint: wrapcheck
}
}
@@ -45,7 +45,7 @@ func (w *wrapperCtx) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
return 0, fmt.Errorf("cannot write because context was closed: %w", w.ctx.Err())
default:
return w.parent.ReadTimeout(p, timeout) // nolint: wrapcheck
return w.parent.ReadTimeout(p, timeout) //nolint: wrapcheck
}
}
@@ -56,14 +56,14 @@ func (w *wrapperCtx) Read(p []byte) (int, error) {
return 0, fmt.Errorf("cannot write because context was closed: %w", w.ctx.Err())
default:
return w.parent.Read(p) // nolint: wrapcheck
return w.parent.Read(p) //nolint: wrapcheck
}
}
func (w *wrapperCtx) Close() error {
w.cancel()
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperCtx) Conn() net.Conn {
+4 -4
View File
@@ -20,7 +20,7 @@ type wrapperFakeTLS struct {
func (w *wrapperFakeTLS) Write(p []byte) (int, error) {
return w.write(p, func(b []byte) (int, error) {
return w.parent.Write(b) // nolint: wrapcheck
return w.parent.Write(b) //nolint: wrapcheck
})
}
@@ -30,7 +30,7 @@ func (w *wrapperFakeTLS) WriteTimeout(p []byte, timeout time.Duration) (int, err
return w.write(p, func(b []byte) (int, error) {
elapsed := time.Since(startTime)
if elapsed > timeout {
return w.parent.WriteTimeout(b, timeout-elapsed) // nolint: wrapcheck
return w.parent.WriteTimeout(b, timeout-elapsed) //nolint: wrapcheck
}
return 0, errors.New("timeout")
@@ -73,7 +73,7 @@ func (w *wrapperFakeTLS) RemoteAddr() *net.TCPAddr {
}
func (w *wrapperFakeTLS) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func NewFakeTLS(socket conntypes.StreamReadWriteCloser) conntypes.StreamReadWriteCloser {
@@ -85,7 +85,7 @@ func NewFakeTLS(socket conntypes.StreamReadWriteCloser) conntypes.StreamReadWrit
for {
rec, err := tlstypes.ReadRecord(faketls.parent)
if err != nil {
return nil, err // nolint: wrapcheck
return nil, err //nolint: wrapcheck
}
switch rec.Type {
+3 -3
View File
@@ -100,11 +100,11 @@ func mtprotoDeriveKeys(purpose mtprotoCipherPurpose,
message.Write(req.Nonce)
data := message.Bytes()
md5sum := md5.Sum(data[1:]) // nolint: gas
sha1sum := sha1.Sum(data) // nolint: gosec
md5sum := md5.Sum(data[1:]) //nolint: gas
sha1sum := sha1.Sum(data) //nolint: gosec
key := append(md5sum[:12], sha1sum[:]...)
iv := md5.Sum(data[2:]) // nolint: gas
iv := md5.Sum(data[2:]) //nolint: gas
return key, iv[:]
}
+4 -4
View File
@@ -31,7 +31,7 @@ func (w *wrapperObfuscated2) ReadTimeout(p []byte, timeout time.Duration) (int,
func (w *wrapperObfuscated2) Read(p []byte) (int, error) {
n, err := w.parent.Read(p)
if err != nil {
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
w.decryptor.XORKeyStream(p, p[:n])
@@ -48,7 +48,7 @@ func (w *wrapperObfuscated2) WriteTimeout(p []byte, timeout time.Duration) (int,
w.encryptor.XORKeyStream(buf, buf)
return w.parent.WriteTimeout(buf, timeout) // nolint: wrapcheck
return w.parent.WriteTimeout(buf, timeout) //nolint: wrapcheck
}
func (w *wrapperObfuscated2) Write(p []byte) (int, error) {
@@ -60,7 +60,7 @@ func (w *wrapperObfuscated2) Write(p []byte) (int, error) {
w.encryptor.XORKeyStream(buf, buf)
return w.parent.Write(buf) // nolint: wrapcheck
return w.parent.Write(buf) //nolint: wrapcheck
}
func (w *wrapperObfuscated2) Conn() net.Conn {
@@ -80,7 +80,7 @@ func (w *wrapperObfuscated2) RemoteAddr() *net.TCPAddr {
}
func (w *wrapperObfuscated2) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func NewObfuscated2(socket conntypes.StreamReadWriteCloser,
+5 -5
View File
@@ -24,25 +24,25 @@ type wrapperRewind struct {
}
func (w *wrapperRewind) Write(p []byte) (int, error) {
return w.parent.Write(p) // nolint: wrapcheck
return w.parent.Write(p) //nolint: wrapcheck
}
func (w *wrapperRewind) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
return w.parent.WriteTimeout(p, timeout) // nolint: wrapcheck
return w.parent.WriteTimeout(p, timeout) //nolint: wrapcheck
}
func (w *wrapperRewind) Read(p []byte) (int, error) {
w.mutex.Lock()
defer w.mutex.Unlock()
return w.activeReader.Read(p) // nolint: wrapcheck
return w.activeReader.Read(p) //nolint: wrapcheck
}
func (w *wrapperRewind) ReadTimeout(p []byte, _ time.Duration) (int, error) {
w.mutex.Lock()
defer w.mutex.Unlock()
return w.activeReader.Read(p) // nolint: wrapcheck
return w.activeReader.Read(p) //nolint: wrapcheck
}
func (w *wrapperRewind) Conn() net.Conn {
@@ -64,7 +64,7 @@ func (w *wrapperRewind) RemoteAddr() *net.TCPAddr {
func (w *wrapperRewind) Close() error {
w.buf.Reset()
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperRewind) Rewind() {
+5 -5
View File
@@ -17,19 +17,19 @@ type wrapperTelegramStats struct {
}
func (w *wrapperTelegramStats) Write(p []byte) (int, error) {
return w.parent.Write(p) // nolint: wrapcheck
return w.parent.Write(p) //nolint: wrapcheck
}
func (w *wrapperTelegramStats) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
return w.parent.WriteTimeout(p, timeout) // nolint: wrapcheck
return w.parent.WriteTimeout(p, timeout) //nolint: wrapcheck
}
func (w *wrapperTelegramStats) Read(p []byte) (int, error) {
return w.parent.Read(p) // nolint: wrapcheck
return w.parent.Read(p) //nolint: wrapcheck
}
func (w *wrapperTelegramStats) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
return w.parent.ReadTimeout(p, timeout) // nolint: wrapcheck
return w.parent.ReadTimeout(p, timeout) //nolint: wrapcheck
}
func (w *wrapperTelegramStats) Conn() net.Conn {
@@ -56,7 +56,7 @@ func (w *wrapperTelegramStats) Close() error {
stats.Stats.TelegramDisconnected(w.dc, w.RemoteAddr())
})
return err // nolint: wrapcheck
return err //nolint: wrapcheck
}
func NewTelegramStats(dc conntypes.DC, parent conntypes.StreamReadWriteCloser) conntypes.StreamReadWriteCloser {
+5 -5
View File
@@ -17,28 +17,28 @@ func (w *wrapperTrafficStats) Write(p []byte) (int, error) {
n, err := w.parent.Write(p)
stats.Stats.EgressTraffic(n)
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperTrafficStats) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
n, err := w.parent.WriteTimeout(p, timeout)
stats.Stats.EgressTraffic(n)
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperTrafficStats) Read(p []byte) (int, error) {
n, err := w.parent.Read(p)
stats.Stats.IngressTraffic(n)
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperTrafficStats) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
n, err := w.parent.ReadTimeout(p, timeout)
stats.Stats.IngressTraffic(n)
return n, err // nolint: wrapcheck
return n, err //nolint: wrapcheck
}
func (w *wrapperTrafficStats) Conn() net.Conn {
@@ -58,7 +58,7 @@ func (w *wrapperTrafficStats) RemoteAddr() *net.TCPAddr {
}
func (w *wrapperTrafficStats) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func NewTrafficStats(parent conntypes.StreamReadWriteCloser) conntypes.StreamReadWriteCloser {
+5 -5
View File
@@ -18,23 +18,23 @@ type wrapperTimeout struct {
}
func (w *wrapperTimeout) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
return w.parent.WriteTimeout(p, timeout) // nolint: wrapcheck
return w.parent.WriteTimeout(p, timeout) //nolint: wrapcheck
}
func (w *wrapperTimeout) Write(p []byte) (int, error) {
return w.parent.WriteTimeout(p, timeoutWrite) // nolint: wrapcheck
return w.parent.WriteTimeout(p, timeoutWrite) //nolint: wrapcheck
}
func (w *wrapperTimeout) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
return w.parent.ReadTimeout(p, timeout) // nolint: wrapcheck
return w.parent.ReadTimeout(p, timeout) //nolint: wrapcheck
}
func (w *wrapperTimeout) Read(p []byte) (int, error) {
return w.parent.ReadTimeout(p, timeoutRead) // nolint: wrapcheck
return w.parent.ReadTimeout(p, timeoutRead) //nolint: wrapcheck
}
func (w *wrapperTimeout) Close() error {
return w.parent.Close() // nolint: wrapcheck
return w.parent.Close() //nolint: wrapcheck
}
func (w *wrapperTimeout) Conn() net.Conn {