This commit is contained in:
66 changed files with 19815 additions and 0 deletions

95
back/Makefile Normal file
View File

@@ -0,0 +1,95 @@
.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 "- Бинарные файлы и ключи"