Add comprehensive configuration and testing for HMAC File Server 3.2
- Introduced configuration files for Docker, Podman, and SystemD deployments. - Implemented a comprehensive test suite for HMAC validation, file uploads, and network resilience. - Added debugging scripts for live monitoring of upload issues and service status. - Created minimal configuration for testing purposes. - Developed multiple test scripts to validate HMAC calculations and response handling. - Enhanced upload tests to cover various scenarios including invalid HMAC and unsupported file extensions. - Improved logging and error analysis capabilities for better diagnostics.
This commit is contained in:
137
dockerenv/podman/deploy-podman-simple.sh
Executable file
137
dockerenv/podman/deploy-podman-simple.sh
Executable file
@ -0,0 +1,137 @@
|
||||
#!/bin/bash
|
||||
# deploy-podman-simple.sh - Simplified Podman deployment for testing
|
||||
# This is a root-compatible version for testing purposes
|
||||
|
||||
set -e
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||||
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
||||
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
||||
|
||||
# Configuration
|
||||
APP_NAME="hmac-file-server"
|
||||
IMAGE_NAME="localhost/hmac-file-server:latest"
|
||||
CONTAINER_NAME="hmac-file-server-test"
|
||||
CONFIG_DIR="/opt/podman/hmac-file-server/config"
|
||||
DATA_DIR="/opt/podman/hmac-file-server/data"
|
||||
|
||||
# Create directories
|
||||
create_directories() {
|
||||
log_info "Creating Podman directories..."
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
mkdir -p "$DATA_DIR"/{uploads,duplicates,temp,logs}
|
||||
|
||||
# Create basic configuration if it doesn't exist
|
||||
if [ ! -f "$CONFIG_DIR/config.toml" ]; then
|
||||
log_info "Creating Podman configuration..."
|
||||
cat > "$CONFIG_DIR/config.toml" << 'EOF'
|
||||
[server]
|
||||
listen_address = "8888"
|
||||
storage_path = "/data/uploads"
|
||||
max_upload_size = "10GB"
|
||||
|
||||
[security]
|
||||
secret = "CHANGE-THIS-SECRET-KEY-MINIMUM-32-CHARACTERS"
|
||||
|
||||
[uploads]
|
||||
allowedextensions = [".txt", ".pdf", ".jpg", ".jpeg", ".png", ".gif", ".zip", ".tar", ".gz"]
|
||||
maxfilesize = "100MB"
|
||||
chunkeduploadsenabled = true
|
||||
networkevents = true
|
||||
|
||||
[network_resilience]
|
||||
enabled = true
|
||||
quality_monitoring = true
|
||||
upload_resilience = true
|
||||
|
||||
[logging]
|
||||
level = "INFO"
|
||||
file = "/logs/hmac-file-server.log"
|
||||
EOF
|
||||
log_success "Configuration created"
|
||||
fi
|
||||
}
|
||||
|
||||
# Build image
|
||||
build_image() {
|
||||
log_info "Building Podman image..."
|
||||
if podman build -t "$IMAGE_NAME" -f ./Dockerfile.podman ../../.. >/dev/null 2>&1; then
|
||||
log_success "Image built successfully"
|
||||
else
|
||||
log_error "Failed to build image"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Run container
|
||||
run_container() {
|
||||
log_info "Running Podman container..."
|
||||
|
||||
# Stop existing container if running
|
||||
if podman ps -q --filter name="$CONTAINER_NAME" | grep -q .; then
|
||||
log_info "Stopping existing container..."
|
||||
podman stop "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
# Remove existing container
|
||||
if podman ps -aq --filter name="$CONTAINER_NAME" | grep -q .; then
|
||||
log_info "Removing existing container..."
|
||||
podman rm "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
# Run new container
|
||||
podman run -d \
|
||||
--name "$CONTAINER_NAME" \
|
||||
--restart unless-stopped \
|
||||
-p 8888:8888 \
|
||||
-v "$CONFIG_DIR:/app/config:Z" \
|
||||
-v "$DATA_DIR:/data:Z" \
|
||||
"$IMAGE_NAME" \
|
||||
-config /app/config/config.toml || {
|
||||
log_error "Failed to run container"
|
||||
return 1
|
||||
}
|
||||
|
||||
log_success "Container started successfully"
|
||||
}
|
||||
|
||||
# Main execution
|
||||
main() {
|
||||
log_info "Starting simplified Podman deployment..."
|
||||
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
log_warning "Running as root - using rootful Podman"
|
||||
fi
|
||||
|
||||
create_directories
|
||||
build_image
|
||||
run_container
|
||||
|
||||
log_success "Podman deployment completed!"
|
||||
log_info "Container status:"
|
||||
podman ps --filter name="$CONTAINER_NAME"
|
||||
}
|
||||
|
||||
# Handle arguments
|
||||
case "${1:-}" in
|
||||
"test")
|
||||
# Test mode - just validate setup
|
||||
create_directories
|
||||
if podman images | grep -q hmac-file-server; then
|
||||
log_success "Podman test validation passed"
|
||||
else
|
||||
log_warning "Podman image not found"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
main
|
||||
;;
|
||||
esac
|
Reference in New Issue
Block a user