Makefile 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. ################################################################################
  2. # Build & release helpers
  3. ################################################################################
  4. DOCKER_IMAGE_TAG_GO_RELEASER := goreleaser/goreleaser:v2.9.0
  5. DOCKER_RUN_GO_RELEASER := @docker run \
  6. --env CGO_ENABLED=0 \
  7. --env GITHUB_TOKEN=$(GITHUB_TOKEN) \
  8. --rm \
  9. --volume `pwd`:/go/src/retro-aim-server \
  10. --workdir /go/src/retro-aim-server \
  11. $(DOCKER_IMAGE_TAG_GO_RELEASER)
  12. .PHONY: config
  13. config: ## Generate config file template from Config struct
  14. go generate ./config
  15. .PHONY: release
  16. release: ## Run a clean, full GoReleaser run (publish + validate)
  17. $(DOCKER_RUN_GO_RELEASER) --clean
  18. .PHONY: release-dry-run
  19. release-dry-run: ## GoReleaser dry-run (skips validate & publish)
  20. $(DOCKER_RUN_GO_RELEASER) --clean --skip=validate --skip=publish
  21. ################################################################################
  22. # SSL Helpers
  23. ################################################################################
  24. CERT_DIR ?= certs
  25. CERT_GEN_IMAGE ?= cert-nss
  26. CERT_NAME ?= ras.dev
  27. CERT_NSSDB_DIR := $(CERT_DIR)/nssdb
  28. CERT_PEM := $(CERT_DIR)/$(CERT_NAME).pem
  29. .PHONY: stunnel-image
  30. stunnel-image: ## Build stunnel image pinned to v5.75 / OpenSSL 1.0.2u
  31. docker build -t stunnel:5.75-openssl-1.0.2u -f Dockerfile.stunnel .
  32. .PHONY: cert-gen-image
  33. cert-gen-image: ## Build minimal helper image with openssl & nss tools
  34. docker build -t $(CERT_GEN_IMAGE) -f Dockerfile.certgen .
  35. .PHONY: certs
  36. certs: clean-certs cert-gen-image ## Create SSL certificates for AIM 6.0+ clients
  37. mkdir -p $(CERT_DIR)
  38. # create SSL certificate
  39. docker run --rm -v "$$PWD":/work -w /work/$(CERT_DIR) $(CERT_GEN_IMAGE) \
  40. openssl req -x509 -newkey rsa:1024 \
  41. -keyout "key.pem" \
  42. -out "cert.pem" \
  43. -sha256 -days 365 -nodes \
  44. -subj "/CN=$(CERT_NAME)"
  45. cat $(CERT_DIR)/cert.pem $(CERT_DIR)/key.pem > $(CERT_PEM)
  46. rm $(CERT_DIR)/cert.pem $(CERT_DIR)/key.pem
  47. # build NSS DB
  48. mkdir -p $(CERT_NSSDB_DIR)
  49. docker run -it --rm -v "$$PWD":/work -w /work $(CERT_GEN_IMAGE) \
  50. sh -c "certutil -N -d $(CERT_NSSDB_DIR) --empty-password && \
  51. certutil -A -n 'RAS' -t 'CT,,C' -i $(CERT_PEM) -d $(CERT_NSSDB_DIR)"
  52. @echo "Successfully created certificates in '$(CERT_DIR)/'"
  53. clean-certs: ## Remove all generated certificates & NSS DB
  54. rm -rf $(CERT_DIR)