81 lines
2.2 KiB
Bash
Executable File
81 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# HMAC File Server - Build Script
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
print_status() {
|
|
echo -e "${GREEN}[BUILD]${NC} $1"
|
|
}
|
|
|
|
print_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Check if Go is installed
|
|
if ! command -v go &> /dev/null; then
|
|
print_error "Go is not installed or not in PATH"
|
|
exit 1
|
|
fi
|
|
|
|
# Build the application
|
|
print_status "Building HMAC File Server v3.2..."
|
|
go build -o hmac-file-server cmd/server/main.go cmd/server/helpers.go cmd/server/config_validator.go cmd/server/config_test_scenarios.go
|
|
|
|
if [ $? -eq 0 ]; then
|
|
print_status "Build successful! Binary created: ./hmac-file-server"
|
|
|
|
# Check binary size
|
|
SIZE=$(du -h hmac-file-server | cut -f1)
|
|
print_info "Binary size: $SIZE"
|
|
|
|
# Show help to verify it works
|
|
print_info "Testing binary functionality..."
|
|
./hmac-file-server --help > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
print_status "Binary is functional!"
|
|
else
|
|
print_error "Binary test failed"
|
|
exit 1
|
|
fi
|
|
else
|
|
print_error "Build failed!"
|
|
exit 1
|
|
fi
|
|
|
|
# Create test file for manual testing
|
|
print_info "Creating test file..."
|
|
echo "Hello, HMAC File Server! $(date)" > test_upload.txt
|
|
|
|
# Generate HMAC signature for manual testing
|
|
print_info "HMAC signature generation for testing:"
|
|
SECRET="hmac-file-server-is-the-win"
|
|
MESSAGE="/upload"
|
|
|
|
# Check if openssl is available
|
|
if command -v openssl &> /dev/null; then
|
|
SIGNATURE=$(echo -n "$MESSAGE" | openssl dgst -sha256 -hmac "$SECRET" | cut -d' ' -f2)
|
|
echo "Secret: $SECRET"
|
|
echo "Message: $MESSAGE"
|
|
echo "Signature: $SIGNATURE"
|
|
echo ""
|
|
echo "Test with curl (requires server running on localhost:8080):"
|
|
echo "curl -v -X POST -H \"X-Signature: $SIGNATURE\" -F \"file=@test_upload.txt\" http://localhost:8080/upload"
|
|
else
|
|
print_info "OpenSSL not found. You can generate HMAC manually or use the Go tests."
|
|
echo "To start server: ./hmac-file-server"
|
|
echo "For testing, check the test/ directory for Go test files."
|
|
fi
|
|
|
|
print_status "Build complete! Ready to run: ./hmac-file-server"
|