|
|
@@ -10,6 +10,7 @@ DOCKER_RUN_GO_RELEASER := @docker run \
|
|
|
--volume `pwd`:/go/src/retro-aim-server \
|
|
|
--workdir /go/src/retro-aim-server \
|
|
|
$(DOCKER_IMAGE_TAG_GO_RELEASER)
|
|
|
+OSCAR_HOST ?= ras.dev
|
|
|
|
|
|
.PHONY: config
|
|
|
config: ## Generate config file template from Config struct
|
|
|
@@ -23,45 +24,37 @@ release: ## Run a clean, full GoReleaser run (publish + validate)
|
|
|
release-dry-run: ## GoReleaser dry-run (skips validate & publish)
|
|
|
$(DOCKER_RUN_GO_RELEASER) --clean --skip=validate --skip=publish
|
|
|
|
|
|
-################################################################################
|
|
|
-# SSL Helpers
|
|
|
-################################################################################
|
|
|
+.PHONY: docker-image-ras
|
|
|
+docker-image-ras: ## Build Retro AIM Server image
|
|
|
+ docker build -t ras:latest -f Dockerfile .
|
|
|
|
|
|
-CERT_DIR ?= certs
|
|
|
-CERT_GEN_IMAGE ?= cert-nss
|
|
|
-CERT_NAME ?= ras.dev
|
|
|
-CERT_NSSDB_DIR := $(CERT_DIR)/nssdb
|
|
|
-CERT_PEM := $(CERT_DIR)/$(CERT_NAME).pem
|
|
|
+.PHONY: docker-image-stunnel
|
|
|
+docker-image-stunnel: ## Build stunnel image pinned to v5.75 / OpenSSL 1.0.2u
|
|
|
+ docker build -t ras-stunnel:5.75-openssl-1.0.2u -f Dockerfile.stunnel .
|
|
|
|
|
|
-.PHONY: stunnel-image
|
|
|
-stunnel-image: ## Build stunnel image pinned to v5.75 / OpenSSL 1.0.2u
|
|
|
- docker build -t stunnel:5.75-openssl-1.0.2u -f Dockerfile.stunnel .
|
|
|
+.PHONY: docker-image-certgen
|
|
|
+docker-image-certgen: ## Build minimal helper image with openssl & nss tools
|
|
|
+ docker build -t ras-certgen:latest -f Dockerfile.certgen .
|
|
|
|
|
|
-.PHONY: cert-gen-image
|
|
|
-cert-gen-image: ## Build minimal helper image with openssl & nss tools
|
|
|
- docker build -t $(CERT_GEN_IMAGE) -f Dockerfile.certgen .
|
|
|
+.PHONY: docker-images
|
|
|
+docker-images: docker-image-ras docker-image-stunnel docker-image-certgen
|
|
|
|
|
|
-.PHONY: certs
|
|
|
-certs: clean-certs cert-gen-image ## Create SSL certificates for AIM 6.0+ clients
|
|
|
- mkdir -p $(CERT_DIR)
|
|
|
+.PHONY: docker-run
|
|
|
+docker-run:
|
|
|
+ OSCAR_HOST=$(OSCAR_HOST) docker compose up retro-aim-server stunnel
|
|
|
|
|
|
- # create SSL certificate
|
|
|
- docker run --rm -v "$$PWD":/work -w /work/$(CERT_DIR) $(CERT_GEN_IMAGE) \
|
|
|
- openssl req -x509 -newkey rsa:1024 \
|
|
|
- -keyout "key.pem" \
|
|
|
- -out "cert.pem" \
|
|
|
- -sha256 -days 365 -nodes \
|
|
|
- -subj "/CN=$(CERT_NAME)"
|
|
|
- cat $(CERT_DIR)/cert.pem $(CERT_DIR)/key.pem > $(CERT_PEM)
|
|
|
- rm $(CERT_DIR)/cert.pem $(CERT_DIR)/key.pem
|
|
|
+################################################################################
|
|
|
+# SSL Helpers
|
|
|
+################################################################################
|
|
|
|
|
|
- # build NSS DB
|
|
|
- mkdir -p $(CERT_NSSDB_DIR)
|
|
|
- docker run -it --rm -v "$$PWD":/work -w /work $(CERT_GEN_IMAGE) \
|
|
|
- sh -c "certutil -N -d $(CERT_NSSDB_DIR) --empty-password && \
|
|
|
- certutil -A -n 'RAS' -t 'CT,,C' -i $(CERT_PEM) -d $(CERT_NSSDB_DIR)"
|
|
|
+.PHONY: docker-cert
|
|
|
+docker-cert: clean-certs ## Create SSL certificates for server
|
|
|
+ OSCAR_HOST=$(OSCAR_HOST) docker compose run --rm cert-gen
|
|
|
|
|
|
- @echo "Successfully created certificates in '$(CERT_DIR)/'"
|
|
|
+.PHONY: docker-nss
|
|
|
+docker-nss: ## Create NSS certificate database for AIM 6.x clients
|
|
|
+ OSCAR_HOST=$(OSCAR_HOST) docker compose run --rm nss-gen
|
|
|
|
|
|
+.PHONY: clean-certs
|
|
|
clean-certs: ## Remove all generated certificates & NSS DB
|
|
|
- rm -rf $(CERT_DIR)
|
|
|
+ rm -rf certs/*
|