Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

Makefile 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
  2. IMAGE_NAME := mtg
  3. APP_NAME := $(IMAGE_NAME)
  4. GOLANGCI_LINT_VERSION := v1.45.0
  5. VERSION := $(shell git describe --exact-match HEAD 2>/dev/null || git describe --tags --always)
  6. COMMON_BUILD_FLAGS := -trimpath -mod=readonly -ldflags="-extldflags '-static' -s -w -X 'main.version=$(VERSION)'"
  7. FUZZ_FLAGS := -fuzztime=120s
  8. GOBIN := $(ROOT_DIR)/.bin
  9. GOTOOL := env "GOBIN=$(GOBIN)" "PATH=$(ROOT_DIR)/.bin:$(PATH)"
  10. # -----------------------------------------------------------------------------
  11. .PHONY: all
  12. all: build
  13. .PHONY: build
  14. build:
  15. @go build $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)"
  16. $(APP_NAME): build
  17. .PHONY: static
  18. static:
  19. @env CGO_ENABLED=0 GOOS=linux go build \
  20. $(COMMON_BUILD_FLAGS) \
  21. -tags netgo \
  22. -a \
  23. -o "$(APP_NAME)"
  24. vendor: go.mod go.sum
  25. @$(MOD_ON) go mod vendor
  26. .bin:
  27. @mkdir -p "$(GOBIN)" || true
  28. .PHONY: fmt
  29. fmt:
  30. @$(GOTOOL) gofumpt -w -extra "$(ROOT_DIR)"
  31. .PHONY: test
  32. test:
  33. @go test -v ./...
  34. .PHONY: citest
  35. citest:
  36. @go test -coverprofile=coverage.txt -covermode=atomic -parallel 2 -race -v ./...
  37. .PHONY: clean
  38. clean:
  39. @git clean -xfd && \
  40. git reset --hard >/dev/null && \
  41. git submodule foreach --recursive sh -c 'git clean -xfd && git reset --hard' >/dev/null
  42. .PHONY: lint
  43. lint:
  44. @$(GOTOOL) golangci-lint run
  45. .PHONY: release
  46. release:
  47. @$(GOTOOL) goreleaser release --snapshot --rm-dist && \
  48. find "$(ROOT_DIR)/dist" -type d | grep -vP "dist$$" | xargs -r rm -rf && \
  49. rm -f "$(ROOT_DIR)/dist/config.yaml"
  50. .PHONY: docker
  51. docker:
  52. @docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
  53. .PHONY: doc
  54. doc:
  55. @$(GOTOOL) godoc -http 0.0.0.0:10000
  56. .PHONY: install-tools
  57. install-tools: install-tools-lint install-tools-godoc install-tools-gofumpt install-tools-goreleaser
  58. .PHONY: install-tools-lint
  59. install-tools-lint: .bin
  60. @curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh \
  61. | bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
  62. .PHONY: install-tools-godoc
  63. install-tools-godoc: .bin
  64. @$(GOTOOL) go install golang.org/x/tools/cmd/godoc@latest
  65. .PHONY: install-tools-gofumpt
  66. install-tools-gofumpt: .bin
  67. @$(GOTOOL) go install mvdan.cc/gofumpt@latest
  68. .PHONY: goreleaser
  69. install-tools-goreleaser: .bin
  70. @$(GOTOOL) go install github.com/goreleaser/goreleaser@latest
  71. .PHONY: update-deps
  72. update-deps:
  73. @go get -u && go mod tidy -go=1.18
  74. .PHONY: fuzz
  75. fuzz: fuzz-ClientHello fuzz-ServerGenerateHandshakeFrame fuzz-ClientHandshake fuzz-ServerReceive fuzz-ServerSend
  76. .PHONY: fuzz-ClientHello
  77. fuzz-ClientHello:
  78. @go test -fuzz=FuzzClientHello $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/faketls"
  79. .PHONY: fuzz-ServerGenerateHandshakeFrame
  80. fuzz-ServerGenerateHandshakeFrame:
  81. @go test -fuzz=FuzzServerGenerateHandshakeFrame $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
  82. .PHONY: fuzz-ClientHandshake
  83. fuzz-ClientHandshake:
  84. @go test -fuzz=FuzzClientHandshake $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
  85. .PHONY: fuzz-ServerReceive
  86. fuzz-ServerReceive:
  87. @go test -fuzz=FuzzServerReceive $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"
  88. .PHONY: fuzz-ServerSend
  89. fuzz-ServerSend:
  90. @go test -fuzz=FuzzServerSend $(FUZZ_FLAGS) "$(ROOT_DIR)/mtglib/internal/obfuscated2"