fix: устранить замечания комплексной проверки

Критичное:
- go.mod: версия 1.25.5→1.25.0 (go mod tidy); Dockerfile: тег 1.25
- release.yml: go-version 1.25.5 → stable
- удалён temp-файл types.go.tmp.18500.1c9f4278a15a
- udprelay/loop.go: defer conn1/conn2.Close() при сбое Dial; лог write-error

Безопасность/код:
- browserprofile: пермиссии 0644→0600
- bondserver: once.Do перед go readLane (ordering fix)
- cmd/server: err= → err:= (shadow fix в AfterFunc)
- vkauth/client: vkDelayRandom ctx-aware (возвращает error)
- captcha/manual: whitelist хостов в /generic_proxy (SSRF mitigation)

Инфра:
- .dockerignore: исключить .git/.github/notes/dist из build context
- docker-compose.yml: env_file .env для OBF_KEY
- entrypoint.sh: позиционные аргументы вместо unquoted vars; валидация host:port

CI:
- ci.yml: исправлен путь go module cache (~/go/pkg/mod); добавлен -race
- .gitignore: добавлены /dist/, *.test, coverage.out, .env, *.tmp
- .golangci.yml: добавлены gosec и staticcheck
- routes-macos.sh: set -eu вместо set -u

Код:
- bondclient/bondserver: errors.Is(err, io.EOF) вместо err != io.EOF
- cmd/client: константа dtlsHandshakeConcurrency для HandshakeSem

Доки:
- quickstart.md: добавлен Intel Mac (darwin-amd64)
- build.md: версия Go, Windows/macOS cross-compile инструкции
- flags.md: уточнено описание -bond
This commit is contained in:
samosvalishe
2026-05-21 20:14:45 +03:00
parent 6fb3b69b1c
commit 8b2e028f99
21 changed files with 133 additions and 33 deletions
+4 -2
View File
@@ -25,6 +25,8 @@ import (
"github.com/samosvalishe/btp/internal/wire/srtpmimicry"
)
const dtlsHandshakeConcurrency = 3
// manualCaptchaSolver связывает контракт vkauth.ManualSolveFunc
// с локальным captcha-обработчиком (internal/client/captcha/manual).
func manualCaptchaSolver(ctx context.Context, e *captcha.Error, d net.Dialer) (string, string, error) {
@@ -107,7 +109,7 @@ func main() {
if cfg.Proxy.Mode != config.ProxyModeUDP {
tcpDtlsDialer := &dtlsdial.Dialer{
HandshakeTimeout: 30 * time.Second,
HandshakeSem: make(chan struct{}, 3),
HandshakeSem: make(chan struct{}, dtlsHandshakeConcurrency),
}
bondH := &bondclient.Handler{Deps: bondclient.Deps{Log: logger}}
tcpDeps := &tcpfwd.Deps{
@@ -134,7 +136,7 @@ func main() {
udpDtlsDialer := &dtlsdial.Dialer{
HandshakeTimeout: 20 * time.Second,
HandshakeSem: make(chan struct{}, 3),
HandshakeSem: make(chan struct{}, dtlsHandshakeConcurrency),
}
udpParams := &udprelay.Params{
Host: cfg.TURN.Host,
+1 -1
View File
@@ -96,7 +96,7 @@ func main() {
os.Exit(1)
}
context.AfterFunc(ctx, func() {
if err = listener.Close(); err != nil {
if err := listener.Close(); err != nil {
logger.Errorf("listener close: %v", err)
}
})