mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
dd8233208ccbe60ea17745ddc17df7a8e6c56872
Проход lint (52 → 0): - vkauth/token: переименовать затенённый err (govet shadow x3) - udprelay/loop: явный _ = conn.Close() (errcheck x2) - captcha/manual: ReadHeaderTimeout + html.EscapeString (G112, G705) - proxy/tcpfwd: хелпер nonNegUint64 для байтовых счётчиков io.Copy (G115) - proxy/bondclient, wire/bondframe: bounds-проверки на len->uint16/uint32 - wire/srtpmimicry: задокументирована усечка RTP seq mod 2^16 - dnsdial/doh: bounds-проверка + binary.BigEndian.PutUint16 - captcha/slider: clamp luma до 255 перед конверсией uint8 - vkauth/types: обоснованный nolint для публичных учёток VK SDK Новый пакет internal/randx — Intn/IntN/Float64 на crypto/rand, drop-in замена math/rand. Мигрированы все места antifingerprint-jitter (~22) в captcha, slider, namegen, vkauth, udprelay. GoReleaser: - bump GORELEASER_VERSION v2.5.0 → v2.15.4 в Taskfile и обоих CI-workflow; текущий синтаксис .goreleaser.yaml (archives.ids, format_overrides.formats) требует v2.8+ - миграция dockers + docker_manifests → dockers_v2 (единый блок, multi-platform buildx); Dockerfile.goreleaser использует конвенцию ARG TARGETPLATFORM
О проекте
btp — туннель UDP/TCP через TURN-реле VK Calls. Клиент берёт временные TURN-учётки из ссылки на звонок и гонит ваш трафик (WireGuard, Xray/VLESS) до сервера на VPS поверх DTLS.
Быстрый старт
См. docs/quickstart.md. Полная документация — в docs/.
Разработка
Зависимости
- Go ≥ 1.25 —
https://go.dev/dl/ - Task (runner) —
go install github.com/go-task/task/v3/cmd/task@v3.40.0илиwinget install Task.Task/brew install go-task
Остальные dev-инструменты (golangci-lint, govulncheck, goimports, goreleaser) ставит сам Task:
task tools:install
Команды
task # список доступных задач
task build # собрать client + server в dist/ для текущего хоста
task build:all # кросс-сборка всех target через goreleaser snapshot
task test # go test -race
task test:cover # тесты + покрытие → cover.html
task lint # golangci-lint
task fmt # gofmt + goimports (форматирование)
task fmt:check # проверить форматирование (используется в CI)
task vet # go vet
task vuln # govulncheck
task ci # полный набор: fmt:check + vet + lint + test + vuln
task tidy # go mod tidy
task clean # удалить dist/, cover.out, cover.html
Релизы
Авто-релизы через Release Please + GoReleaser.
feat: ...— minor bumpfix: .../perf: ...— patch bumpbreak: ...(илиfeat!:) — major bumprefactor:,docs:,test:,chore:,ci:,style:— в CHANGELOG не попадают (либо группа Refactoring)
Поток: push в main → Release Please откроет PR chore(main): release X.Y.Z с обновлённым CHANGELOG.md → merge PR → тег vX.Y.Z → GoReleaser выпускает релиз (бинари + Docker image на GHCR).
Pre-release: создать тег вручную git tag v0.X.Y-rc.1 && git push --tags. GoReleaser детектит автоматически (latest Docker тег не обновляется).
Telegram канал: Free Turn
Languages
Go
87.6%
Shell
11.4%
JavaScript
0.7%
PowerShell
0.3%
