mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 15:14:03 +03:00
Merge pull request #331 from 9seconds/go1.26
Chore updates for golang 1.26
This commit is contained in:
@@ -2,7 +2,7 @@ package events
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"math/rand"
|
"math/rand/v2"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/9seconds/mtg/v2/mtglib"
|
"github.com/9seconds/mtg/v2/mtglib"
|
||||||
@@ -64,7 +64,7 @@ func NewEventStream(observerFactories []ObserverFactory) EventStream {
|
|||||||
chans: make([]chan mtglib.Event, runtime.NumCPU()),
|
chans: make([]chan mtglib.Event, runtime.NumCPU()),
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < runtime.NumCPU(); i++ {
|
for i := range runtime.NumCPU() {
|
||||||
rv.chans[i] = make(chan mtglib.Event, 1)
|
rv.chans[i] = make(chan mtglib.Event, 1)
|
||||||
|
|
||||||
if len(observerFactories) == 1 {
|
if len(observerFactories) == 1 {
|
||||||
|
|||||||
+27
-54
@@ -12,14 +12,11 @@ type multiObserver struct {
|
|||||||
|
|
||||||
func (m multiObserver) EventStart(evt mtglib.EventStart) {
|
func (m multiObserver) EventStart(evt mtglib.EventStart) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventStart(evt)
|
||||||
|
})
|
||||||
obs.EventStart(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -27,14 +24,11 @@ func (m multiObserver) EventStart(evt mtglib.EventStart) {
|
|||||||
|
|
||||||
func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
|
func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventConnectedToDC(evt)
|
||||||
|
})
|
||||||
obs.EventConnectedToDC(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -42,14 +36,11 @@ func (m multiObserver) EventConnectedToDC(evt mtglib.EventConnectedToDC) {
|
|||||||
|
|
||||||
func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
|
func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventDomainFronting(evt)
|
||||||
|
})
|
||||||
obs.EventDomainFronting(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -57,14 +48,11 @@ func (m multiObserver) EventDomainFronting(evt mtglib.EventDomainFronting) {
|
|||||||
|
|
||||||
func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
|
func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventTraffic(evt)
|
||||||
|
})
|
||||||
obs.EventTraffic(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -72,14 +60,11 @@ func (m multiObserver) EventTraffic(evt mtglib.EventTraffic) {
|
|||||||
|
|
||||||
func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
|
func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventFinish(evt)
|
||||||
|
})
|
||||||
obs.EventFinish(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -87,14 +72,11 @@ func (m multiObserver) EventFinish(evt mtglib.EventFinish) {
|
|||||||
|
|
||||||
func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimited) {
|
func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimited) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventConcurrencyLimited(evt)
|
||||||
|
})
|
||||||
obs.EventConcurrencyLimited(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -102,14 +84,11 @@ func (m multiObserver) EventConcurrencyLimited(evt mtglib.EventConcurrencyLimite
|
|||||||
|
|
||||||
func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
|
func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventIPBlocklisted(evt)
|
||||||
|
})
|
||||||
obs.EventIPBlocklisted(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -117,14 +96,11 @@ func (m multiObserver) EventIPBlocklisted(evt mtglib.EventIPBlocklisted) {
|
|||||||
|
|
||||||
func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
|
func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventReplayAttack(evt)
|
||||||
|
})
|
||||||
obs.EventReplayAttack(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@@ -132,14 +108,11 @@ func (m multiObserver) EventReplayAttack(evt mtglib.EventReplayAttack) {
|
|||||||
|
|
||||||
func (m multiObserver) EventIPListSize(evt mtglib.EventIPListSize) {
|
func (m multiObserver) EventIPListSize(evt mtglib.EventIPListSize) {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(m.observers))
|
|
||||||
|
|
||||||
for _, v := range m.observers {
|
for _, v := range m.observers {
|
||||||
go func(obs Observer) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
v.EventIPListSize(evt)
|
||||||
|
})
|
||||||
obs.EventIPListSize(evt)
|
|
||||||
}(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|||||||
+4
-10
@@ -61,11 +61,8 @@ func (a *Access) Run(cli *CLI, version string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(2)
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
|
wg.Go(func() {
|
||||||
ip := a.PublicIPv4
|
ip := a.PublicIPv4
|
||||||
if ip == nil {
|
if ip == nil {
|
||||||
ip = a.getIP(ntw, "tcp4")
|
ip = a.getIP(ntw, "tcp4")
|
||||||
@@ -76,11 +73,8 @@ func (a *Access) Run(cli *CLI, version string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resp.IPv4 = a.makeURLs(conf, ip)
|
resp.IPv4 = a.makeURLs(conf, ip)
|
||||||
}()
|
})
|
||||||
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
ip := a.PublicIPv6
|
ip := a.PublicIPv6
|
||||||
if ip == nil {
|
if ip == nil {
|
||||||
ip = a.getIP(ntw, "tcp6")
|
ip = a.getIP(ntw, "tcp6")
|
||||||
@@ -91,7 +85,7 @@ func (a *Access) Run(cli *CLI, version string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resp.IPv6 = a.makeURLs(conf, ip)
|
resp.IPv6 = a.makeURLs(conf, ip)
|
||||||
}()
|
})
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ type TypeBoolTestSuite struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *TypeBoolTestSuite) TestUnmarshalFail() {
|
func (suite *TypeBoolTestSuite) TestUnmarshalFail() {
|
||||||
testData := []interface{}{
|
testData := []any{
|
||||||
"",
|
"",
|
||||||
"np",
|
"np",
|
||||||
"нет",
|
"нет",
|
||||||
@@ -29,7 +29,7 @@ func (suite *TypeBoolTestSuite) TestUnmarshalFail() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range testData {
|
for _, v := range testData {
|
||||||
data, err := json.Marshal(map[string]interface{}{
|
data, err := json.Marshal(map[string]any{
|
||||||
"value": v,
|
"value": v,
|
||||||
})
|
})
|
||||||
suite.NoError(err)
|
suite.NoError(err)
|
||||||
|
|||||||
@@ -112,18 +112,15 @@ func (f *Firehol) update() {
|
|||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(len(f.blocklists))
|
|
||||||
|
|
||||||
mutex := &sync.Mutex{}
|
mutex := &sync.Mutex{}
|
||||||
ranger := cidranger.NewPCTrieRanger()
|
ranger := cidranger.NewPCTrieRanger()
|
||||||
|
|
||||||
for _, v := range f.blocklists {
|
for _, v := range f.blocklists {
|
||||||
go func(file files.File) {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
logger := f.logger.BindStr("filename", v.String())
|
||||||
|
|
||||||
logger := f.logger.BindStr("filename", file.String())
|
fileContent, err := v.Open(ctx)
|
||||||
|
|
||||||
fileContent, err := file.Open(ctx)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.WarningError("update has failed", err)
|
logger.WarningError("update has failed", err)
|
||||||
|
|
||||||
@@ -135,7 +132,7 @@ func (f *Firehol) update() {
|
|||||||
if err := f.updateFromFile(mutex, ranger, bufio.NewScanner(fileContent)); err != nil {
|
if err := f.updateFromFile(mutex, ranger, bufio.NewScanner(fileContent)); err != nil {
|
||||||
logger.WarningError("update has failed", err)
|
logger.WarningError("update has failed", err)
|
||||||
}
|
}
|
||||||
}(v)
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|||||||
+1
-1
@@ -8,5 +8,5 @@ package logger
|
|||||||
// commonly used by many 3pp tools. While mtglib itself does not need it, it is
|
// commonly used by many 3pp tools. While mtglib itself does not need it, it is
|
||||||
// always a good idea to support it and have a transient end to end logging.
|
// always a good idea to support it and have a transient end to end logging.
|
||||||
type StdLikeLogger interface {
|
type StdLikeLogger interface {
|
||||||
Printf(format string, args ...interface{})
|
Printf(format string, args ...any)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ func (n noopLogger) Named(_ string) mtglib.Logger { return n }
|
|||||||
func (n noopLogger) BindInt(_ string, _ int) mtglib.Logger { return n }
|
func (n noopLogger) BindInt(_ string, _ int) mtglib.Logger { return n }
|
||||||
func (n noopLogger) BindStr(_, _ string) mtglib.Logger { return n }
|
func (n noopLogger) BindStr(_, _ string) mtglib.Logger { return n }
|
||||||
func (n noopLogger) BindJSON(_, _ string) mtglib.Logger { return n }
|
func (n noopLogger) BindJSON(_, _ string) mtglib.Logger { return n }
|
||||||
func (n noopLogger) Printf(_ string, _ ...interface{}) {}
|
func (n noopLogger) Printf(_ string, _ ...any) {}
|
||||||
func (n noopLogger) Info(_ string) {}
|
func (n noopLogger) Info(_ string) {}
|
||||||
func (n noopLogger) Warning(_ string) {}
|
func (n noopLogger) Warning(_ string) {}
|
||||||
func (n noopLogger) Debug(_ string) {}
|
func (n noopLogger) Debug(_ string) {}
|
||||||
|
|||||||
+1
-1
@@ -78,7 +78,7 @@ func (z *zeroLogContext) BindJSON(name, value string) mtglib.Logger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (z *zeroLogContext) Printf(format string, args ...interface{}) {
|
func (z *zeroLogContext) Printf(format string, args ...any) {
|
||||||
z.Debug(fmt.Sprintf(format, args...))
|
z.Debug(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ version = "latest"
|
|||||||
backend = "go:golang.org/x/pkgsite/cmd/pkgsite"
|
backend = "go:golang.org/x/pkgsite/cmd/pkgsite"
|
||||||
|
|
||||||
[[tools."go:golang.org/x/tools/gopls"]]
|
[[tools."go:golang.org/x/tools/gopls"]]
|
||||||
version = "0.21.0"
|
version = "0.21.1"
|
||||||
backend = "go:golang.org/x/tools/gopls"
|
backend = "go:golang.org/x/tools/gopls"
|
||||||
|
|
||||||
[[tools."go:mvdan.cc/gofumpt"]]
|
[[tools."go:mvdan.cc/gofumpt"]]
|
||||||
@@ -20,13 +20,13 @@ version = "0.9.2"
|
|||||||
backend = "go:mvdan.cc/gofumpt"
|
backend = "go:mvdan.cc/gofumpt"
|
||||||
|
|
||||||
[[tools.golangci-lint]]
|
[[tools.golangci-lint]]
|
||||||
version = "2.9.0"
|
version = "2.10.1"
|
||||||
backend = "aqua:golangci/golangci-lint"
|
backend = "aqua:golangci/golangci-lint"
|
||||||
"platforms.linux-arm64" = { checksum = "sha256:94e80cdb51c73c20a313bd3afa1fb23137728813c19fd730248a1e8678fcc46d", url = "https://github.com/golangci/golangci-lint/releases/download/v2.9.0/golangci-lint-2.9.0-linux-arm64.tar.gz"}
|
"platforms.linux-arm64" = { checksum = "sha256:6652b42ae02915eb2f9cb2a2e0cac99514c8eded8388d88ae3e06e1a52c00de8", url = "https://github.com/golangci/golangci-lint/releases/download/v2.10.1/golangci-lint-2.10.1-linux-arm64.tar.gz"}
|
||||||
"platforms.linux-x64" = { checksum = "sha256:493aaaca2eba6c8bcef847d92716bbd91bbac4b22cdbb0ab5b6a581b32946091", url = "https://github.com/golangci/golangci-lint/releases/download/v2.9.0/golangci-lint-2.9.0-linux-amd64.tar.gz"}
|
"platforms.linux-x64" = { checksum = "sha256:dfa775874cf0561b404a02a8f4481fc69b28091da95aa697259820d429b09c99", url = "https://github.com/golangci/golangci-lint/releases/download/v2.10.1/golangci-lint-2.10.1-linux-amd64.tar.gz"}
|
||||||
"platforms.macos-arm64" = { checksum = "sha256:a86eabba3507deddd21f2a01a1df2a0ee5bc5c8178d4165cdcaaad8597358760", url = "https://github.com/golangci/golangci-lint/releases/download/v2.9.0/golangci-lint-2.9.0-darwin-arm64.tar.gz"}
|
"platforms.macos-arm64" = { checksum = "sha256:03bfadf67e52b441b7ec21305e501c717df93c959836d66c7f97312654acb297", url = "https://github.com/golangci/golangci-lint/releases/download/v2.10.1/golangci-lint-2.10.1-darwin-arm64.tar.gz"}
|
||||||
"platforms.macos-x64" = { checksum = "sha256:ba29a353be54a74c45946763983808dc8305eeeca73db1761b5ab112f87f8157", url = "https://github.com/golangci/golangci-lint/releases/download/v2.9.0/golangci-lint-2.9.0-darwin-amd64.tar.gz"}
|
"platforms.macos-x64" = { checksum = "sha256:66fb0da81b8033b477f97eea420d4b46b230ca172b8bb87c6610109f3772b6b6", url = "https://github.com/golangci/golangci-lint/releases/download/v2.10.1/golangci-lint-2.10.1-darwin-amd64.tar.gz"}
|
||||||
"platforms.windows-x64" = { checksum = "sha256:130fca8fa959eb840267c5e231f030a948e0de1e768bf6a31785505d1061632c", url = "https://github.com/golangci/golangci-lint/releases/download/v2.9.0/golangci-lint-2.9.0-windows-amd64.zip"}
|
"platforms.windows-x64" = { checksum = "sha256:c60c87695e79db8e320f0e5be885059859de52bb5ee5f11be5577828570bc2a3", url = "https://github.com/golangci/golangci-lint/releases/download/v2.10.1/golangci-lint-2.10.1-windows-amd64.zip"}
|
||||||
|
|
||||||
[[tools.goreleaser]]
|
[[tools.goreleaser]]
|
||||||
version = "2.13.3"
|
version = "2.13.3"
|
||||||
|
|||||||
+1
-1
@@ -249,7 +249,7 @@ type Logger interface {
|
|||||||
BindJSON(name, value string) Logger
|
BindJSON(name, value string) Logger
|
||||||
|
|
||||||
// Printf is to support log.Logger behavior.
|
// Printf is to support log.Logger behavior.
|
||||||
Printf(format string, args ...interface{})
|
Printf(format string, args ...any)
|
||||||
|
|
||||||
// Info puts a message about some normal situation.
|
// Info puts a message about some normal situation.
|
||||||
Info(msg string)
|
Info(msg string)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ func (n NoopLogger) Named(_ string) Logger { return n }
|
|||||||
func (n NoopLogger) BindInt(_ string, _ int) Logger { return n }
|
func (n NoopLogger) BindInt(_ string, _ int) Logger { return n }
|
||||||
func (n NoopLogger) BindStr(_, _ string) Logger { return n }
|
func (n NoopLogger) BindStr(_, _ string) Logger { return n }
|
||||||
func (n NoopLogger) BindJSON(_, _ string) Logger { return n }
|
func (n NoopLogger) BindJSON(_, _ string) Logger { return n }
|
||||||
func (n NoopLogger) Printf(_ string, _ ...interface{}) {}
|
func (n NoopLogger) Printf(_ string, _ ...any) {}
|
||||||
func (n NoopLogger) Info(_ string) {}
|
func (n NoopLogger) Info(_ string) {}
|
||||||
func (n NoopLogger) Warning(_ string) {}
|
func (n NoopLogger) Warning(_ string) {}
|
||||||
func (n NoopLogger) Debug(_ string) {}
|
func (n NoopLogger) Debug(_ string) {}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ func ParseClientHello(secret, handshake []byte) (ClientHello, error) {
|
|||||||
|
|
||||||
computedRandom := mac.Sum(nil)
|
computedRandom := mac.Sum(nil)
|
||||||
|
|
||||||
for i := 0; i < RandomLen; i++ {
|
for i := range RandomLen {
|
||||||
computedRandom[i] ^= hello.Random[i]
|
computedRandom[i] ^= hello.Random[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package faketls
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand/v2"
|
||||||
|
|
||||||
"github.com/9seconds/mtg/v2/essentials"
|
"github.com/9seconds/mtg/v2/essentials"
|
||||||
"github.com/9seconds/mtg/v2/mtglib/internal/faketls/record"
|
"github.com/9seconds/mtg/v2/mtglib/internal/faketls/record"
|
||||||
@@ -53,7 +53,7 @@ func (c *Conn) Write(p []byte) (int, error) {
|
|||||||
lenP := len(p)
|
lenP := len(p)
|
||||||
|
|
||||||
for len(p) > 0 {
|
for len(p) > 0 {
|
||||||
chunkSize := rand.Intn(record.TLSMaxRecordSize)
|
chunkSize := rand.IntN(record.TLSMaxRecordSize)
|
||||||
if chunkSize > len(p) || chunkSize == 0 {
|
if chunkSize > len(p) || chunkSize == 0 {
|
||||||
chunkSize = len(p)
|
chunkSize = len(p)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ package faketls_test
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"crypto/rand"
|
||||||
"errors"
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/9seconds/mtg/v2/internal/testlib"
|
"github.com/9seconds/mtg/v2/internal/testlib"
|
||||||
@@ -123,7 +123,7 @@ func (suite *ConnTestSuite) TestWrite() {
|
|||||||
suite.connMock.On("Write", mock.Anything).Return(0, nil)
|
suite.connMock.On("Write", mock.Anything).Return(0, nil)
|
||||||
|
|
||||||
dataToRec := make([]byte, record.TLSMaxRecordSize*2)
|
dataToRec := make([]byte, record.TLSMaxRecordSize*2)
|
||||||
rand.Read(dataToRec) //nolint: staticcheck
|
rand.Read(dataToRec) //nolint: staticcheck, errcheck
|
||||||
|
|
||||||
n, err := suite.c.Write(dataToRec)
|
n, err := suite.c.Write(dataToRec)
|
||||||
suite.NoError(err)
|
suite.NoError(err)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var bytesBufferPool = sync.Pool{
|
var bytesBufferPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() any {
|
||||||
return &bytes.Buffer{}
|
return &bytes.Buffer{}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var recordPool = sync.Pool{
|
var recordPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() any {
|
||||||
return &Record{}
|
return &Record{}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import (
|
|||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
"io"
|
"io"
|
||||||
mrand "math/rand"
|
mrand "math/rand/v2"
|
||||||
|
|
||||||
"github.com/9seconds/mtg/v2/mtglib/internal/faketls/record"
|
"github.com/9seconds/mtg/v2/mtglib/internal/faketls/record"
|
||||||
"golang.org/x/crypto/curve25519"
|
"golang.org/x/crypto/curve25519"
|
||||||
@@ -36,7 +36,7 @@ func SendWelcomePacket(writer io.Writer, secret []byte, clientHello ClientHello)
|
|||||||
rec.Type = record.TypeApplicationData
|
rec.Type = record.TypeApplicationData
|
||||||
rec.Version = record.Version12
|
rec.Version = record.Version12
|
||||||
|
|
||||||
if _, err := io.CopyN(&rec.Payload, rand.Reader, int64(1024+mrand.Intn(3092))); err != nil {
|
if _, err := io.CopyN(&rec.Payload, rand.Reader, int64(1024+mrand.IntN(3092))); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package faketls_test
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/hmac"
|
"crypto/hmac"
|
||||||
|
"crypto/rand"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"math/rand"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ func (h *handshakeFrame) connectionType() []byte {
|
|||||||
func (h *handshakeFrame) invert() handshakeFrame {
|
func (h *handshakeFrame) invert() handshakeFrame {
|
||||||
copyFrame := *h
|
copyFrame := *h
|
||||||
|
|
||||||
for i := 0; i < handshakeFrameLenKey+handshakeFrameLenIV; i++ {
|
for i := range handshakeFrameLenKey + handshakeFrameLenIV {
|
||||||
copyFrame.data[handshakeFrameOffsetKey+i] = h.data[handshakeFrameOffsetConnectionType-1-i]
|
copyFrame.data[handshakeFrameOffsetKey+i] = h.data[handshakeFrameOffsetConnectionType-1-i]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ func NewServerHandshakeTestData(t *testing.T) ServerHandshakeTestData {
|
|||||||
|
|
||||||
serverEncryptedReverted := make([]byte, len(serverEncrypted))
|
serverEncryptedReverted := make([]byte, len(serverEncrypted))
|
||||||
|
|
||||||
for i := 0; i < 32+16; i++ {
|
for i := range 32 + 16 {
|
||||||
serverEncryptedReverted[8+i] = serverEncrypted[8+32+16-1-i]
|
serverEncryptedReverted[8+i] = serverEncrypted[8+32+16-1-i]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
sha256HasherPool = sync.Pool{
|
sha256HasherPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() any {
|
||||||
return sha256.New()
|
return sha256.New()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
bytesBufferPool = sync.Pool{
|
bytesBufferPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() any {
|
||||||
return &bytes.Buffer{}
|
return &bytes.Buffer{}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Logger interface {
|
type Logger interface {
|
||||||
Printf(msg string, args ...interface{})
|
Printf(msg string, args ...any)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ package relay_test
|
|||||||
|
|
||||||
type loggerMock struct{}
|
type loggerMock struct{}
|
||||||
|
|
||||||
func (l loggerMock) Printf(format string, args ...interface{}) {}
|
func (l loggerMock) Printf(format string, args ...any) {}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package relay
|
|||||||
import "sync"
|
import "sync"
|
||||||
|
|
||||||
var copyBufferPool = sync.Pool{
|
var copyBufferPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() any {
|
||||||
rv := make([]byte, copyBufferSize)
|
rv := make([]byte, copyBufferSize)
|
||||||
|
|
||||||
return &rv
|
return &rv
|
||||||
|
|||||||
+1
-1
@@ -323,7 +323,7 @@ func NewProxy(opts ProxyOpts) (*Proxy, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pool, err := ants.NewPoolWithFunc(opts.getConcurrency(),
|
pool, err := ants.NewPoolWithFunc(opts.getConcurrency(),
|
||||||
func(arg interface{}) {
|
func(arg any) {
|
||||||
proxy.ServeConn(arg.(essentials.Conn)) //nolint: forcetypeassert
|
proxy.ServeConn(arg.(essentials.Conn)) //nolint: forcetypeassert
|
||||||
},
|
},
|
||||||
ants.WithLogger(opts.getLogger("ants")),
|
ants.WithLogger(opts.getLogger("ants")),
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ func (s *streamContext) Err() error {
|
|||||||
return s.ctx.Err() //nolint: wrapcheck
|
return s.ctx.Err() //nolint: wrapcheck
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *streamContext) Value(key interface{}) interface{} {
|
func (s *streamContext) Value(key any) any {
|
||||||
return s.ctx.Value(key)
|
return s.ctx.Value(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,17 +52,9 @@ func (suite *CircuitBreakerTestSuite) TestMultipleRunsOk() {
|
|||||||
Return(suite.connMock, nil)
|
Return(suite.connMock, nil)
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(5)
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
wg.Wait()
|
|
||||||
suite.ctxCancel()
|
|
||||||
}()
|
|
||||||
|
|
||||||
for i := 0; i < 5; i++ {
|
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
|
for range 5 {
|
||||||
|
wg.Go(func() {
|
||||||
conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.1")
|
conn, err := suite.d.DialContext(suite.ctx, "tcp", "127.0.0.1")
|
||||||
|
|
||||||
suite.mutex.Lock()
|
suite.mutex.Lock()
|
||||||
@@ -70,9 +62,14 @@ func (suite *CircuitBreakerTestSuite) TestMultipleRunsOk() {
|
|||||||
|
|
||||||
suite.NoError(err)
|
suite.NoError(err)
|
||||||
suite.Equal("127.0.0.1:3128", conn.RemoteAddr().String())
|
suite.Equal("127.0.0.1:3128", conn.RemoteAddr().String())
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
wg.Wait()
|
||||||
|
suite.ctxCancel()
|
||||||
|
}()
|
||||||
|
|
||||||
suite.Eventually(func() bool {
|
suite.Eventually(func() bool {
|
||||||
_, ok := <-suite.ctx.Done()
|
_, ok := <-suite.ctx.Done()
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package network
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand/v2"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
"github.com/9seconds/mtg/v2/essentials"
|
"github.com/9seconds/mtg/v2/essentials"
|
||||||
@@ -19,7 +19,7 @@ func (l loadBalancedSocks5Dialer) Dial(network, address string) (essentials.Conn
|
|||||||
|
|
||||||
func (l loadBalancedSocks5Dialer) DialContext(ctx context.Context, network, address string) (essentials.Conn, error) {
|
func (l loadBalancedSocks5Dialer) DialContext(ctx context.Context, network, address string) (essentials.Conn, error) {
|
||||||
length := len(l.dialers)
|
length := len(l.dialers)
|
||||||
start := rand.Intn(length)
|
start := rand.IntN(length)
|
||||||
moved := false
|
moved := false
|
||||||
|
|
||||||
for i := start; i != start || !moved; i = (i + 1) % length {
|
for i := start; i != start || !moved; i = (i + 1) % length {
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ func (suite *LoadBalancedSocks5TestSuite) TestCannotDial() {
|
|||||||
})
|
})
|
||||||
suite.NoError(err)
|
suite.NoError(err)
|
||||||
|
|
||||||
for i := 0; i < network.ProxyDialerOpenThreshold*2; i++ {
|
for range network.ProxyDialerOpenThreshold * 2 {
|
||||||
_, err = lbDialer.Dial("tcp", "127.1.1.1:80")
|
_, err = lbDialer.Dial("tcp", "127.1.1.1:80")
|
||||||
suite.True(errors.Is(err, network.ErrCannotDialWithAllProxies))
|
suite.True(errors.Is(err, network.ErrCannotDialWithAllProxies))
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-13
@@ -3,7 +3,7 @@ package network
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand/v2"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -81,32 +81,24 @@ func (n *network) dnsResolve(protocol, address string) ([]string, error) {
|
|||||||
|
|
||||||
switch protocol {
|
switch protocol {
|
||||||
case "tcp", "tcp4":
|
case "tcp", "tcp4":
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
|
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
resolved := n.dns.LookupA(address)
|
resolved := n.dns.LookupA(address)
|
||||||
|
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
ips = append(ips, resolved...)
|
ips = append(ips, resolved...)
|
||||||
mutex.Unlock()
|
mutex.Unlock()
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
switch protocol {
|
switch protocol {
|
||||||
case "tcp", "tcp6":
|
case "tcp", "tcp6":
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
|
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
|
|
||||||
resolved := n.dns.LookupAAAA(address)
|
resolved := n.dns.LookupAAAA(address)
|
||||||
|
|
||||||
mutex.Lock()
|
mutex.Lock()
|
||||||
ips = append(ips, resolved...)
|
ips = append(ips, resolved...)
|
||||||
mutex.Unlock()
|
mutex.Unlock()
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ package stats
|
|||||||
import "sync"
|
import "sync"
|
||||||
|
|
||||||
var streamInfoPool = sync.Pool{
|
var streamInfoPool = sync.Pool{
|
||||||
New: func() interface{} {
|
New: func() any {
|
||||||
return &streamInfo{
|
return &streamInfo{
|
||||||
tags: make(map[string]string),
|
tags: make(map[string]string),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user