Files
knock-gui/back/Makefile
2025-08-17 00:43:58 +06:00

95 lines
4.2 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.PHONY: build build-linux build-windows clean test help
# Переменные
BINARY_NAME=port-knocker
VERSION=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
BUILD_TIME=$(shell date -u '+%Y-%m-%d_%H:%M:%S')
LDFLAGS=-ldflags "-X main.Version=${VERSION} -X main.BuildTime=${BUILD_TIME} -s -w"
# Цвета для вывода
GREEN=\033[0;32m
NC=\033[0m # No Color
help: ## Показать справку
@echo "$(GREEN)Port Knocker - Утилита для port knocking$(NC)"
@echo ""
@echo "Доступные команды:"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-15s$(NC) %s\n", $$1, $$2}'
build: ## Собрать для текущей платформы
@echo "$(GREEN)Сборка для текущей платформы...$(NC)"
go build ${LDFLAGS} -o ${BINARY_NAME} .
build-linux: ## Собрать для Linux (amd64)
@echo "$(GREEN)Сборка для Linux (amd64)...$(NC)"
GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o ${BINARY_NAME}-linux-amd64 .
build-windows: ## Собрать для Windows (amd64)
@echo "$(GREEN)Сборка для Windows (amd64)...$(NC)"
GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o ${BINARY_NAME}-windows-amd64.exe .
build-all: build-linux build-windows ## Собрать для всех платформ
test: ## Запустить тесты
@echo "$(GREEN)Запуск тестов...$(NC)"
go test -v ./...
clean: ## Очистить собранные файлы
@echo "$(GREEN)Очистка...$(NC)"
rm -f ${BINARY_NAME}*
rm -f *.exe
install: build ## Установить в систему
@echo "$(GREEN)Установка...$(NC)"
sudo cp ${BINARY_NAME} /usr/local/bin/
uninstall: ## Удалить из системы
@echo "$(GREEN)Удаление...$(NC)"
sudo rm -f /usr/local/bin/${BINARY_NAME}
deps: ## Установить зависимости
@echo "$(GREEN)Установка зависимостей...$(NC)"
go mod tidy
go mod download
example-encrypt: ## Пример шифрования конфигурации
@echo "$(GREEN)Шифрование примера конфигурации...$(NC)"
./${BINARY_NAME} encrypt -c examples/config.yaml -o examples/config.encrypted -k examples/key.txt
example-decrypt: ## Пример расшифровки зашифрованной конфигурации
@echo "$(GREEN)Расшифровка зашифрованной конфигурации...$(NC)"
./${BINARY_NAME} decrypt -c examples/config.encrypted -o examples/config.decrypted.yaml -k examples/key.txt
example-encrypt-alt: ## Пример шифрования с опцией -i
@echo "$(GREEN)Шифрование с опцией -i...$(NC)"
./${BINARY_NAME} encrypt -i examples/config.yaml -o examples/config.encrypted -k examples/key.txt
example-run: ## Пример запуска с обычной конфигурацией
@echo "$(GREEN)Запуск с обычной конфигурацией...$(NC)"
./${BINARY_NAME} -c examples/config.yaml -v
example-inline: ## Пример запуска с инлайн целями
@echo "$(GREEN)Запуск с инлайн целями...$(NC)"
./${BINARY_NAME} -t "tcp:192.168.1.1:22;tcp:192.168.1.1:80;udp:192.168.1.1:53" -d 500ms -v
example-inline-simple: ## Простой пример с одной целью
@echo "$(GREEN)Простой пример с одной целью...$(NC)"
./${BINARY_NAME} -t "tcp:127.0.0.1:22" -v
release-tag: ## Создать git tag для release (например: make release-tag VERSION=v1.0.0)
@if [ -z "$(VERSION)" ]; then \
echo "Использование: make release-tag VERSION=v1.0.0"; \
exit 1; \
fi
@echo "$(GREEN)Создание тега $(VERSION)...$(NC)"
git tag -a $(VERSION) -m "Release $(VERSION)"
git push origin $(VERSION)
check-git: ## Проверить git статус перед коммитом
@echo "$(GREEN)Проверка git статуса...$(NC)"
git status
@echo ""
@echo "$(GREEN)Файлы в .gitignore:$(NC)"
@echo "- *knock*.yaml (конфигурации с 'knock' в имени)"
@echo "- *.encrypted (зашифрованные файлы)"
@echo "- Бинарные файлы и ключи"