Remove development scripts from repository tracking (keep in .gitignore)
This commit is contained in:
358
check-configs.sh
358
check-configs.sh
@ -1,358 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# HMAC File Server Configuration Consistency Checker
|
|
||||||
# Ensures all deployment methods use proper configuration structure
|
|
||||||
|
|
||||||
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 templates to check
|
|
||||||
CONFIG_LOCATIONS=(
|
|
||||||
"/opt/hmac-file-server/config.toml" # SystemD
|
|
||||||
"./hmac-docker/config/config.toml" # Docker
|
|
||||||
"/opt/podman/hmac-file-server/config/config.toml" # Podman
|
|
||||||
"/etc/hmac-file-server/config.toml" # Debian
|
|
||||||
"./config-default.toml" # Default template
|
|
||||||
"./config-simple.toml" # Simple template
|
|
||||||
"./config-simplified-production.toml" # Production template
|
|
||||||
)
|
|
||||||
|
|
||||||
# Required sections and fields
|
|
||||||
REQUIRED_SECTIONS=("server" "security" "uploads" "logging")
|
|
||||||
REQUIRED_FIELDS=(
|
|
||||||
"server.listen_address"
|
|
||||||
"server.storage_path"
|
|
||||||
"security.secret"
|
|
||||||
"uploads.networkevents"
|
|
||||||
)
|
|
||||||
|
|
||||||
NETWORK_RESILIENCE_FIELDS=(
|
|
||||||
"network_resilience.enabled"
|
|
||||||
"network_resilience.quality_monitoring"
|
|
||||||
"network_resilience.upload_resilience"
|
|
||||||
)
|
|
||||||
|
|
||||||
check_config_file() {
|
|
||||||
local config_file="$1"
|
|
||||||
local config_name="$2"
|
|
||||||
local errors=0
|
|
||||||
local warnings=0
|
|
||||||
|
|
||||||
log_info "Checking $config_name: $config_file"
|
|
||||||
|
|
||||||
if [ ! -f "$config_file" ]; then
|
|
||||||
log_warning "Configuration file not found (may not be installed)"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for common field naming issues
|
|
||||||
if grep -q "storagepath\s*=" "$config_file" 2>/dev/null; then
|
|
||||||
log_error "Found 'storagepath' - should be 'storage_path'"
|
|
||||||
((errors++))
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "listenport\s*=" "$config_file" 2>/dev/null; then
|
|
||||||
log_error "Found 'listenport' - should be 'listen_address'"
|
|
||||||
((errors++))
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "metricsenabled\s*=" "$config_file" 2>/dev/null; then
|
|
||||||
log_error "Found 'metricsenabled' - should be 'metrics_enabled'"
|
|
||||||
((errors++))
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check required sections
|
|
||||||
for section in "${REQUIRED_SECTIONS[@]}"; do
|
|
||||||
if ! grep -q "^\[$section\]" "$config_file" 2>/dev/null; then
|
|
||||||
log_error "Missing required section: [$section]"
|
|
||||||
((errors++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Check required fields
|
|
||||||
for field in "${REQUIRED_FIELDS[@]}"; do
|
|
||||||
field_name=$(echo "$field" | cut -d'.' -f2)
|
|
||||||
if ! grep -q "^$field_name\s*=" "$config_file" 2>/dev/null; then
|
|
||||||
log_warning "Missing or commented field: $field_name"
|
|
||||||
((warnings++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Check network resilience
|
|
||||||
local has_network_resilience=false
|
|
||||||
if grep -q "^\[network_resilience\]" "$config_file" 2>/dev/null; then
|
|
||||||
has_network_resilience=true
|
|
||||||
log_success "Network resilience section found"
|
|
||||||
|
|
||||||
for field in "${NETWORK_RESILIENCE_FIELDS[@]}"; do
|
|
||||||
field_name=$(echo "$field" | cut -d'.' -f2)
|
|
||||||
if ! grep -q "^$field_name\s*=" "$config_file" 2>/dev/null; then
|
|
||||||
log_warning "Missing network resilience field: $field_name"
|
|
||||||
((warnings++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
log_warning "Network resilience section missing"
|
|
||||||
((warnings++))
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check networkevents setting
|
|
||||||
if grep -q "networkevents\s*=\s*true" "$config_file" 2>/dev/null; then
|
|
||||||
if [ "$has_network_resilience" = false ]; then
|
|
||||||
log_error "networkevents=true but no [network_resilience] section"
|
|
||||||
((errors++))
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validate configuration with binary if available
|
|
||||||
if [ -f "./test-hmac-file-server" ]; then
|
|
||||||
log_info "Validating configuration syntax..."
|
|
||||||
if ./test-hmac-file-server -config "$config_file" --validate-config >/dev/null 2>&1; then
|
|
||||||
log_success "Configuration validation passed"
|
|
||||||
else
|
|
||||||
log_warning "Configuration has validation warnings"
|
|
||||||
((warnings++))
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Summary for this config
|
|
||||||
if [ $errors -eq 0 ] && [ $warnings -eq 0 ]; then
|
|
||||||
log_success "$config_name: Perfect configuration"
|
|
||||||
elif [ $errors -eq 0 ]; then
|
|
||||||
log_warning "$config_name: $warnings warnings"
|
|
||||||
else
|
|
||||||
log_error "$config_name: $errors errors, $warnings warnings"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
return $errors
|
|
||||||
}
|
|
||||||
|
|
||||||
# Auto-fix function
|
|
||||||
fix_config_file() {
|
|
||||||
local config_file="$1"
|
|
||||||
local config_name="$2"
|
|
||||||
|
|
||||||
if [ ! -f "$config_file" ]; then
|
|
||||||
log_warning "Configuration file not found: $config_file"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_info "Auto-fixing $config_name..."
|
|
||||||
|
|
||||||
# Create backup
|
|
||||||
cp "$config_file" "$config_file.backup.$(date +%Y%m%d_%H%M%S)"
|
|
||||||
|
|
||||||
# Fix common field naming issues
|
|
||||||
sed -i 's/storagepath\s*=/storage_path =/g' "$config_file"
|
|
||||||
sed -i 's/listenport\s*=/listen_address =/g' "$config_file"
|
|
||||||
sed -i 's/metricsenabled\s*=/metrics_enabled =/g' "$config_file"
|
|
||||||
sed -i 's/metricsport\s*=/metrics_port =/g' "$config_file"
|
|
||||||
sed -i 's/pidfilepath\s*=/pid_file =/g' "$config_file"
|
|
||||||
|
|
||||||
# Ensure networkevents is enabled if network_resilience section exists
|
|
||||||
if grep -q "^\[network_resilience\]" "$config_file" 2>/dev/null; then
|
|
||||||
if ! grep -q "networkevents\s*=" "$config_file" 2>/dev/null; then
|
|
||||||
# Add networkevents = true to uploads section
|
|
||||||
sed -i '/^\[uploads\]/a networkevents = true' "$config_file"
|
|
||||||
else
|
|
||||||
# Enable existing networkevents
|
|
||||||
sed -i 's/networkevents\s*=\s*false/networkevents = true/g' "$config_file"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_success "Auto-fix completed for $config_name"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Generate standardized configuration
|
|
||||||
generate_standard_config() {
|
|
||||||
local config_file="$1"
|
|
||||||
local deployment_type="$2"
|
|
||||||
|
|
||||||
log_info "Generating standardized configuration for $deployment_type..."
|
|
||||||
|
|
||||||
# Create directory if needed
|
|
||||||
mkdir -p "$(dirname "$config_file")"
|
|
||||||
|
|
||||||
cat > "$config_file" << EOF
|
|
||||||
# HMAC File Server 3.3 "Nexus Infinitum" Configuration
|
|
||||||
# Generated for: $deployment_type deployment
|
|
||||||
# Generated on: $(date)
|
|
||||||
|
|
||||||
[server]
|
|
||||||
listen_address = "8080"
|
|
||||||
storage_path = "/opt/hmac-file-server/data/uploads"
|
|
||||||
metrics_enabled = true
|
|
||||||
metrics_port = "9090"
|
|
||||||
pid_file = "/opt/hmac-file-server/data/hmac-file-server.pid"
|
|
||||||
max_upload_size = "10GB"
|
|
||||||
deduplication_enabled = true
|
|
||||||
min_free_bytes = "1GB"
|
|
||||||
file_naming = "original"
|
|
||||||
enable_dynamic_workers = true
|
|
||||||
|
|
||||||
[security]
|
|
||||||
secret = "CHANGE-THIS-SECRET-KEY-MINIMUM-32-CHARACTERS"
|
|
||||||
enablejwt = false
|
|
||||||
|
|
||||||
[uploads]
|
|
||||||
allowedextensions = [".txt", ".pdf", ".jpg", ".jpeg", ".png", ".gif", ".webp", ".zip", ".tar", ".gz", ".7z", ".mp4", ".webm", ".ogg", ".mp3", ".wav", ".flac", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".odt", ".ods", ".odp"]
|
|
||||||
maxfilesize = "100MB"
|
|
||||||
chunkeduploadsenabled = true
|
|
||||||
chunksize = "10MB"
|
|
||||||
networkevents = true
|
|
||||||
|
|
||||||
# Network Resilience for Enhanced Mobile Support
|
|
||||||
[network_resilience]
|
|
||||||
enabled = true
|
|
||||||
fast_detection = false # Standard detection for server deployment
|
|
||||||
quality_monitoring = true # Enable quality monitoring
|
|
||||||
predictive_switching = false # Conservative switching for servers
|
|
||||||
mobile_optimizations = false # Standard thresholds for server environment
|
|
||||||
upload_resilience = true # Resume uploads across network changes
|
|
||||||
detection_interval = "5s" # Standard detection interval
|
|
||||||
quality_check_interval = "10s" # Regular quality monitoring
|
|
||||||
network_change_threshold = 3 # Switches required to trigger network change
|
|
||||||
interface_stability_time = "30s" # Server-appropriate stability time
|
|
||||||
upload_pause_timeout = "5m" # Standard upload pause timeout
|
|
||||||
upload_retry_timeout = "10m" # Standard retry timeout
|
|
||||||
rtt_warning_threshold = "200ms" # Server network warning threshold
|
|
||||||
rtt_critical_threshold = "1000ms" # Server network critical threshold
|
|
||||||
packet_loss_warning_threshold = 2.0 # 2% packet loss warning
|
|
||||||
packet_loss_critical_threshold = 10.0 # 10% packet loss critical
|
|
||||||
|
|
||||||
[downloads]
|
|
||||||
chunkeddownloadsenabled = true
|
|
||||||
chunksize = "10MB"
|
|
||||||
|
|
||||||
[logging]
|
|
||||||
level = "INFO"
|
|
||||||
file = "/opt/hmac-file-server/data/logs/hmac-file-server.log"
|
|
||||||
max_size = 100
|
|
||||||
max_backups = 3
|
|
||||||
max_age = 30
|
|
||||||
compress = true
|
|
||||||
|
|
||||||
[workers]
|
|
||||||
numworkers = 10
|
|
||||||
uploadqueuesize = 1000
|
|
||||||
autoscaling = true
|
|
||||||
|
|
||||||
[timeouts]
|
|
||||||
readtimeout = "30s"
|
|
||||||
writetimeout = "30s"
|
|
||||||
idletimeout = "120s"
|
|
||||||
shutdown = "30s"
|
|
||||||
|
|
||||||
[clamav]
|
|
||||||
enabled = false
|
|
||||||
|
|
||||||
[redis]
|
|
||||||
enabled = false
|
|
||||||
EOF
|
|
||||||
|
|
||||||
log_success "Standard configuration generated: $config_file"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main function
|
|
||||||
main() {
|
|
||||||
echo -e "${BLUE}╔═══════════════════════════════════════════════════════════╗${NC}"
|
|
||||||
echo -e "${BLUE}║${NC} HMAC File Server Configuration Consistency Checker ${BLUE}║${NC}"
|
|
||||||
echo -e "${BLUE}╚═══════════════════════════════════════════════════════════╝${NC}"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
local total_errors=0
|
|
||||||
local fix_mode=false
|
|
||||||
local generate_mode=false
|
|
||||||
|
|
||||||
# Parse arguments
|
|
||||||
while [[ $# -gt 0 ]]; do
|
|
||||||
case $1 in
|
|
||||||
--fix)
|
|
||||||
fix_mode=true
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--generate)
|
|
||||||
generate_mode=true
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--help)
|
|
||||||
echo "Configuration Consistency Checker"
|
|
||||||
echo ""
|
|
||||||
echo "Usage: $0 [options]"
|
|
||||||
echo ""
|
|
||||||
echo "Options:"
|
|
||||||
echo " --fix Auto-fix common configuration issues"
|
|
||||||
echo " --generate Generate standardized configurations"
|
|
||||||
echo " --help Show this help"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
log_error "Unknown option: $1"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$generate_mode" = true ]; then
|
|
||||||
log_info "Generating standardized configurations for all deployment methods..."
|
|
||||||
generate_standard_config "./templates/config-systemd.toml" "SystemD"
|
|
||||||
generate_standard_config "./templates/config-docker.toml" "Docker"
|
|
||||||
generate_standard_config "./templates/config-podman.toml" "Podman"
|
|
||||||
generate_standard_config "./templates/config-debian.toml" "Debian"
|
|
||||||
log_success "All standard configurations generated in ./templates/"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check all configuration locations
|
|
||||||
for i in "${!CONFIG_LOCATIONS[@]}"; do
|
|
||||||
config_file="${CONFIG_LOCATIONS[$i]}"
|
|
||||||
|
|
||||||
# Determine config name
|
|
||||||
case "$config_file" in
|
|
||||||
*"/opt/hmac-file-server/"*) config_name="SystemD" ;;
|
|
||||||
*"hmac-docker"*) config_name="Docker" ;;
|
|
||||||
*"podman"*) config_name="Podman" ;;
|
|
||||||
*"/etc/hmac-file-server/"*) config_name="Debian" ;;
|
|
||||||
*"config-default.toml") config_name="Default Template" ;;
|
|
||||||
*"config-simple.toml") config_name="Simple Template" ;;
|
|
||||||
*"config-simplified-production.toml") config_name="Production Template" ;;
|
|
||||||
*) config_name="Unknown" ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$fix_mode" = true ]; then
|
|
||||||
fix_config_file "$config_file" "$config_name"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if check_config_file "$config_file" "$config_name"; then
|
|
||||||
# No errors
|
|
||||||
:
|
|
||||||
else
|
|
||||||
((total_errors++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Summary
|
|
||||||
echo "════════════════════════════════════════════════════════════"
|
|
||||||
if [ $total_errors -eq 0 ]; then
|
|
||||||
log_success "All configurations are consistent and valid!"
|
|
||||||
else
|
|
||||||
log_error "Found configuration issues in $total_errors files"
|
|
||||||
echo ""
|
|
||||||
log_info "Run with --fix to automatically correct common issues"
|
|
||||||
log_info "Run with --generate to create standardized configuration templates"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@ -1,244 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 🧹 HMAC File Server 3.3.0 "Nexus Infinitum" - Developer File Cleanup
|
|
||||||
# Carefully removes development and test files while preserving production assets
|
|
||||||
# Date: August 26, 2025
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Colors
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
RED='\033[0;31m'
|
|
||||||
PURPLE='\033[0;35m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
echo -e "${BLUE}🧹 HMAC FILE SERVER 3.3.0 DEVELOPER CLEANUP${NC}"
|
|
||||||
echo "=============================================="
|
|
||||||
echo "Carefully cleaning development files while preserving production assets"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Files to keep (important production files)
|
|
||||||
KEEP_FILES=(
|
|
||||||
"hmac-file-server-network-fixed" # Main enhanced server binary
|
|
||||||
"hmac-file-server-desktop-fixed" # Desktop client enhanced binary
|
|
||||||
"config-mobile-resilient.toml" # Production mobile config
|
|
||||||
"config-production-enhanced.toml" # Production config
|
|
||||||
"config-production-validated.toml" # Validated production config
|
|
||||||
"README.md" # Main documentation
|
|
||||||
"WIKI.MD" # Wiki documentation
|
|
||||||
"LICENSE" # License file
|
|
||||||
"go.mod" # Go module file
|
|
||||||
"go.sum" # Go dependencies
|
|
||||||
"RELEASE_NOTES_3.3.0.md" # Current release notes
|
|
||||||
"install-manager.sh" # Production installer
|
|
||||||
"installer.sh" # Alternative installer
|
|
||||||
"builddebian.sh" # Debian package builder
|
|
||||||
"builddocker.sh" # Docker builder
|
|
||||||
"build-multi-arch.sh" # Multi-architecture builder
|
|
||||||
"docker-multiarch-build.sh" # Docker multi-arch builder
|
|
||||||
"fix_xmpp_clients.sh" # Client troubleshooting tool
|
|
||||||
"verify_network_resilience.sh" # Network verification tool
|
|
||||||
"NETWORK_RESILIENCE_COMPLETE.md" # Network feature documentation
|
|
||||||
"DESKTOP_XMPP_CLIENT_FIX.md" # Desktop client fix documentation
|
|
||||||
"XMPP_CLIENT_ECOSYSTEM_ANALYSIS.md" # Client analysis
|
|
||||||
"xmpp_client_upload_diagnosis.ipynb" # Diagnostic notebook
|
|
||||||
"test-large-file-multiupload.sh" # Large file multi-upload test
|
|
||||||
"test-large-file-async-processing.sh" # Async processing test
|
|
||||||
"large-file-performance-fix-summary.sh" # Performance fix summary
|
|
||||||
"compilation_summary.sh" # Build compilation summary
|
|
||||||
)
|
|
||||||
|
|
||||||
# Directories to keep
|
|
||||||
KEEP_DIRS=(
|
|
||||||
"cmd/" # Source code
|
|
||||||
"dashboard/" # Monitoring dashboard
|
|
||||||
"dockerenv/" # Docker configurations
|
|
||||||
"ejabberd-module/" # XMPP module
|
|
||||||
"templates/" # Configuration templates
|
|
||||||
"tests/" # Test framework
|
|
||||||
"uploads/" # Upload directory
|
|
||||||
".git/" # Git repository
|
|
||||||
)
|
|
||||||
|
|
||||||
# Files to remove (development/testing artifacts)
|
|
||||||
REMOVE_FILES=(
|
|
||||||
"hmac-file-server" # Old binary
|
|
||||||
"hmac-file-server-ejabberd" # Development binary
|
|
||||||
"hmac-file-server-fixed" # Old fixed binary
|
|
||||||
"hmac-file-server-mobile-resilient" # Development binary
|
|
||||||
"hmac-file-server-3.3.0-enhanced" # Development binary
|
|
||||||
"hmac-file-server-3.3.0-test" # Test binary
|
|
||||||
"hmac-file-server-enhanced-security" # Development binary
|
|
||||||
"hmac-file-server-gajim-fix" # Development binary
|
|
||||||
"hmac-file-server-gajim-fix-v2" # Development binary
|
|
||||||
"hmac-file-server-gajim-multiupload-fix" # Development binary
|
|
||||||
"hmac-file-server-test" # Test binary
|
|
||||||
"monitor" # Test monitor
|
|
||||||
"server" # Test server
|
|
||||||
"quick-test" # Development test
|
|
||||||
"test" # Old test script
|
|
||||||
"test-file.txt" # Test file
|
|
||||||
"test_enhanced_mime.go" # Development test
|
|
||||||
"test_mime.go" # Development test
|
|
||||||
"test_mime_integration.go" # Development test
|
|
||||||
"router-test.log" # Test log
|
|
||||||
"server-test.log" # Test log
|
|
||||||
"test-server.log" # Test log
|
|
||||||
)
|
|
||||||
|
|
||||||
# Config files to remove (development/testing configs)
|
|
||||||
REMOVE_CONFIGS=(
|
|
||||||
"test-config.toml" # Test config
|
|
||||||
"test-config-network-resilience.toml" # Test config
|
|
||||||
"test-config-resilience.toml" # Test config
|
|
||||||
"test-final.toml" # Test config
|
|
||||||
"test-minimal.toml" # Test config
|
|
||||||
"test-simple-config.toml" # Test config
|
|
||||||
"test-simple.toml" # Test config
|
|
||||||
"test-startup.toml" # Test config
|
|
||||||
"test-success.toml" # Test config
|
|
||||||
"config-client-multiinterface.toml" # Development config
|
|
||||||
)
|
|
||||||
|
|
||||||
# Scripts to remove (development/testing scripts)
|
|
||||||
REMOVE_SCRIPTS=(
|
|
||||||
"comprehensive_upload_test.sh" # Development test
|
|
||||||
"debug-uploads.sh" # Development debug
|
|
||||||
"monitor_nginx.sh" # Development monitor
|
|
||||||
"monitor_server.sh" # Development monitor
|
|
||||||
"monitor_uploads.sh" # Development monitor
|
|
||||||
"test-network-resilience.sh" # Development test
|
|
||||||
"test_network_resilience_complete.sh" # Development test
|
|
||||||
"test_network_switching.sh" # Development test
|
|
||||||
"test_build_network_switching.sh" # Development test
|
|
||||||
"test_enhanced_security.sh" # Development test
|
|
||||||
"test-gajim-cors-fix.sh" # Development test
|
|
||||||
"test-gajim-multiupload-fix.sh" # Development test
|
|
||||||
"simple_revalidation.sh" # Development validation
|
|
||||||
"revalidate_all_features.sh" # Development validation
|
|
||||||
"check-configs.sh" # Development check
|
|
||||||
)
|
|
||||||
|
|
||||||
# Documentation to remove (outdated/development docs)
|
|
||||||
REMOVE_DOCS=(
|
|
||||||
"ADAPTIVE_IO_INTEGRATION.md" # Development doc
|
|
||||||
"CHANGELOG.MD" # Old changelog
|
|
||||||
"DUAL_STACK_IMPROVEMENTS.md" # Development doc
|
|
||||||
"EJABBERD_MODULE_PROPOSAL.md" # Development proposal
|
|
||||||
"GIT_RELEASE_NOTES_3.2.2.md" # Old release notes
|
|
||||||
"IMPROVEMENT_SUMMARY.md" # Development summary
|
|
||||||
"MIME_TYPE_ENHANCEMENT_REPORT.md" # Development report
|
|
||||||
"MULTI_INTERFACE_INTEGRATION_COMPLETE.md" # Development doc
|
|
||||||
"NETWORK_RESILIENCE_FIX_REPORT.md" # Development report
|
|
||||||
"RELEASE_NOTES_3.2.2.md" # Old release notes
|
|
||||||
"STABILITY_AUDIT_PLAN.md" # Development audit
|
|
||||||
)
|
|
||||||
|
|
||||||
# Directories to remove (development/testing dirs)
|
|
||||||
REMOVE_DIRS=(
|
|
||||||
"temp/" # Temporary files
|
|
||||||
"test-uploads/" # Test uploads
|
|
||||||
"dedup_store/" # Development dedup store (empty)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Function to safely remove files
|
|
||||||
safe_remove() {
|
|
||||||
local item="$1"
|
|
||||||
local type="$2"
|
|
||||||
|
|
||||||
if [ "$type" = "file" ] && [ -f "$item" ]; then
|
|
||||||
echo -e "${YELLOW}📄 Removing file: $item${NC}"
|
|
||||||
rm -f "$item"
|
|
||||||
return 0
|
|
||||||
elif [ "$type" = "dir" ] && [ -d "$item" ]; then
|
|
||||||
if [ -z "$(ls -A "$item" 2>/dev/null)" ]; then
|
|
||||||
echo -e "${YELLOW}📁 Removing empty directory: $item${NC}"
|
|
||||||
rmdir "$item"
|
|
||||||
else
|
|
||||||
echo -e "${YELLOW}📁 Removing directory: $item${NC}"
|
|
||||||
rm -rf "$item"
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Count removed items
|
|
||||||
REMOVED_COUNT=0
|
|
||||||
|
|
||||||
echo -e "${BLUE}🗑️ REMOVING DEVELOPMENT FILES${NC}"
|
|
||||||
echo "==============================="
|
|
||||||
|
|
||||||
# Remove development files
|
|
||||||
for file in "${REMOVE_FILES[@]}"; do
|
|
||||||
if safe_remove "$file" "file"; then
|
|
||||||
((REMOVED_COUNT++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Remove development configs
|
|
||||||
for config in "${REMOVE_CONFIGS[@]}"; do
|
|
||||||
if safe_remove "$config" "file"; then
|
|
||||||
((REMOVED_COUNT++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Remove development scripts
|
|
||||||
for script in "${REMOVE_SCRIPTS[@]}"; do
|
|
||||||
if safe_remove "$script" "file"; then
|
|
||||||
((REMOVED_COUNT++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Remove development documentation
|
|
||||||
for doc in "${REMOVE_DOCS[@]}"; do
|
|
||||||
if safe_remove "$doc" "file"; then
|
|
||||||
((REMOVED_COUNT++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Remove development directories
|
|
||||||
for dir in "${REMOVE_DIRS[@]}"; do
|
|
||||||
if safe_remove "$dir" "dir"; then
|
|
||||||
((REMOVED_COUNT++))
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}✅ PRESERVED PRODUCTION FILES${NC}"
|
|
||||||
echo "============================"
|
|
||||||
|
|
||||||
# Show kept files
|
|
||||||
echo -e "${GREEN}📦 Key production files preserved:${NC}"
|
|
||||||
for file in "${KEEP_FILES[@]}"; do
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
echo -e " ✅ $file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}📁 Production directories preserved:${NC}"
|
|
||||||
for dir in "${KEEP_DIRS[@]}"; do
|
|
||||||
if [ -d "$dir" ]; then
|
|
||||||
echo -e " ✅ $dir"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${PURPLE}📊 CLEANUP SUMMARY${NC}"
|
|
||||||
echo "=================="
|
|
||||||
echo -e "Items removed: ${REMOVED_COUNT}"
|
|
||||||
echo -e "Production files preserved: ${#KEEP_FILES[@]}"
|
|
||||||
echo -e "Production directories preserved: ${#KEEP_DIRS[@]}"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}🎯 PRODUCTION-READY STRUCTURE${NC}"
|
|
||||||
echo "============================="
|
|
||||||
echo "The HMAC File Server 3.3.0 'Nexus Infinitum' is now clean and"
|
|
||||||
echo "ready for production deployment with all development artifacts removed."
|
|
||||||
echo ""
|
|
||||||
echo -e "${BLUE}🚀 Ready to deploy:${NC}"
|
|
||||||
echo " ./hmac-file-server-network-fixed -config config-mobile-resilient.toml"
|
|
||||||
echo ""
|
|
||||||
echo "Cleanup completed at $(date)"
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 127.0.0.1:4443 ssl http2;
|
|
||||||
listen [::1]:4443 ssl http2;
|
|
||||||
server_name share.uuxo.net;
|
|
||||||
|
|
||||||
# SSL settings
|
|
||||||
ssl_certificate /etc/nginx/ssl/uuxo_nginx.crt;
|
|
||||||
ssl_certificate_key /etc/nginx/ssl/uuxo_nginx.key;
|
|
||||||
ssl_dhparam /etc/nginx/ssl/dhparams.pem;
|
|
||||||
|
|
||||||
# Security headers
|
|
||||||
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;
|
|
||||||
add_header X-Content-Type-Options "nosniff" always;
|
|
||||||
add_header X-Frame-Options "DENY" always;
|
|
||||||
add_header X-XSS-Protection "1; mode=block" always;
|
|
||||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
|
||||||
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
|
|
||||||
|
|
||||||
# Enhanced large file upload settings for 1GB+ multi-transfer
|
|
||||||
client_max_body_size 10G;
|
|
||||||
client_body_timeout 7200s; # 2 hours for large uploads
|
|
||||||
client_header_timeout 300s;
|
|
||||||
client_body_buffer_size 2m; # Increased buffer for large files
|
|
||||||
send_timeout 7200s; # 2 hours to match server timeouts
|
|
||||||
|
|
||||||
# Main location for uploads
|
|
||||||
location / {
|
|
||||||
# REMOVE CORS handling from nginx - let the server handle it
|
|
||||||
# This fixes conflicts with enhanced multi-upload CORS headers
|
|
||||||
|
|
||||||
# Proxy settings
|
|
||||||
proxy_pass http://127.0.0.1:8080/;
|
|
||||||
|
|
||||||
# Forward client's IP and protocol details
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "Upgrade";
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
|
||||||
proxy_redirect off;
|
|
||||||
|
|
||||||
# Disable buffering for large uploads
|
|
||||||
proxy_request_buffering off;
|
|
||||||
proxy_buffering off;
|
|
||||||
proxy_max_temp_file_size 0;
|
|
||||||
|
|
||||||
# Enhanced timeout settings for large file uploads (2 hours)
|
|
||||||
proxy_connect_timeout 7200s;
|
|
||||||
proxy_send_timeout 7200s;
|
|
||||||
proxy_read_timeout 7200s;
|
|
||||||
keepalive_timeout 1800s; # 30 minutes for multi-upload sessions
|
|
||||||
|
|
||||||
# Connection persistence and resilience for multi-transfer
|
|
||||||
proxy_socket_keepalive on;
|
|
||||||
proxy_next_upstream error timeout http_502 http_503 http_504;
|
|
||||||
proxy_next_upstream_timeout 7200s;
|
|
||||||
proxy_next_upstream_tries 3; # Allow retries for large file failures
|
|
||||||
|
|
||||||
# Enhanced error handling for large files
|
|
||||||
proxy_intercept_errors off; # Let server handle errors directly
|
|
||||||
}
|
|
||||||
|
|
||||||
# Block access to specific files
|
|
||||||
location = /upload/robots.txt {
|
|
||||||
deny all;
|
|
||||||
return 403;
|
|
||||||
}
|
|
||||||
|
|
||||||
location = /upload/sitemaps.xml {
|
|
||||||
deny all;
|
|
||||||
return 403;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Enhanced logging for large file debugging
|
|
||||||
error_log /var/log/nginx/upload_errors.log debug;
|
|
||||||
access_log /var/log/nginx/upload_access.log combined;
|
|
||||||
}
|
|
||||||
@ -1,288 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 🔍 COMPLETE REVALIDATION OF HMAC FILE SERVER NETWORK RESILIENCE
|
|
||||||
# Date: August 26, 2025
|
|
||||||
# Status: Final validation of all implemented features
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Colors
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
PURPLE='\033[0;35m'
|
|
||||||
CYAN='\033[0;36m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
print_header() {
|
|
||||||
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
||||||
echo -e "${CYAN}$1${NC}"
|
|
||||||
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_section() {
|
|
||||||
echo ""
|
|
||||||
echo -e "${BLUE}📋 $1${NC}"
|
|
||||||
echo -e "${BLUE}$(printf '%.0s─' {1..50})${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_success() {
|
|
||||||
echo -e " ${GREEN}✅ PASS:${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_fail() {
|
|
||||||
echo -e " ${RED}❌ FAIL:${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_info() {
|
|
||||||
echo -e " ${YELLOW}ℹ️ INFO:${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_critical() {
|
|
||||||
echo -e " ${PURPLE}🔥 CRITICAL:${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Test counters
|
|
||||||
TOTAL_CHECKS=0
|
|
||||||
PASSED_CHECKS=0
|
|
||||||
|
|
||||||
check_feature() {
|
|
||||||
local feature="$1"
|
|
||||||
local description="$2"
|
|
||||||
local test_command="$3"
|
|
||||||
|
|
||||||
((TOTAL_CHECKS++))
|
|
||||||
|
|
||||||
if eval "$test_command" >/dev/null 2>&1; then
|
|
||||||
print_success "$feature - $description"
|
|
||||||
((PASSED_CHECKS++))
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
print_fail "$feature - $description"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
print_header "🔍 COMPLETE REVALIDATION: HMAC FILE SERVER NETWORK RESILIENCE"
|
|
||||||
echo ""
|
|
||||||
echo -e "${CYAN}Comprehensive validation of all WiFi ↔ LTE switching and authentication fixes${NC}"
|
|
||||||
echo -e "${CYAN}Date: $(date '+%Y-%m-%d %H:%M:%S')${NC}"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# SECTION 1: BINARY AND CONFIGURATION
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
print_section "Binary and Configuration Validation"
|
|
||||||
|
|
||||||
check_feature "Server Binary" "hmac-file-server-network-fixed exists and is executable" \
|
|
||||||
'[ -x "./hmac-file-server-network-fixed" ]'
|
|
||||||
|
|
||||||
check_feature "Configuration File" "config-mobile-resilient.toml exists and readable" \
|
|
||||||
'[ -r "config-mobile-resilient.toml" ]'
|
|
||||||
|
|
||||||
check_feature "Server Version" "Server reports correct version" \
|
|
||||||
'./hmac-file-server-network-fixed -version 2>/dev/null | grep -q "HMAC File Server\|v3.3"'
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# SECTION 2: BEARER TOKEN VALIDATION CODE
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
print_section "Bearer Token Validation Implementation"
|
|
||||||
|
|
||||||
check_feature "validateBearerToken Function" "Bearer token validation function exists" \
|
|
||||||
'grep -q "func validateBearerToken" cmd/server/main.go'
|
|
||||||
|
|
||||||
check_feature "Mobile Client Detection" "Mobile XMPP client detection logic present" \
|
|
||||||
'grep -A5 "isMobileXMPP.*:=" cmd/server/main.go | grep -q "conversations\|dino\|gajim"'
|
|
||||||
|
|
||||||
check_feature "Grace Period Logic" "Ultra-flexible grace periods implemented" \
|
|
||||||
'grep -q "gracePeriod.*int64" cmd/server/main.go && grep -q "43200.*12 hours" cmd/server/main.go'
|
|
||||||
|
|
||||||
check_feature "Ultra Grace Period" "72-hour ultra-maximum grace period implemented" \
|
|
||||||
'grep -q "259200.*72 hours" cmd/server/main.go'
|
|
||||||
|
|
||||||
check_feature "Standby Recovery" "Device standby recovery logic present" \
|
|
||||||
'grep -q "STANDBY RECOVERY" cmd/server/main.go'
|
|
||||||
|
|
||||||
check_feature "Network Switch Detection" "WiFi ↔ LTE switching detection implemented" \
|
|
||||||
'grep -A10 "xForwardedFor\|xRealIP" cmd/server/main.go | grep -q "Network switching detected"'
|
|
||||||
|
|
||||||
check_feature "Multiple Payload Formats" "5 different HMAC payload formats supported" \
|
|
||||||
'grep -A50 "ENHANCED HMAC VALIDATION" cmd/server/main.go | grep -c "expectedMAC" | grep -q "5"'
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# SECTION 3: IP DETECTION AND NETWORK HANDLING
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
print_section "Network Change Detection"
|
|
||||||
|
|
||||||
check_feature "getClientIP Function" "Client IP detection function exists" \
|
|
||||||
'grep -q "func getClientIP" cmd/server/chunked_upload_handler.go'
|
|
||||||
|
|
||||||
check_feature "X-Forwarded-For Support" "Proxy header support for network changes" \
|
|
||||||
'grep -A5 "X-Forwarded-For" cmd/server/chunked_upload_handler.go | grep -q "xff.*!="'
|
|
||||||
|
|
||||||
check_feature "X-Real-IP Support" "Real IP header support for mobile carriers" \
|
|
||||||
'grep -A5 "X-Real-IP" cmd/server/chunked_upload_handler.go | grep -q "xri.*!="'
|
|
||||||
|
|
||||||
check_feature "Remote Address Fallback" "Fallback to remote address when no headers" \
|
|
||||||
'grep -A3 "r.RemoteAddr" cmd/server/chunked_upload_handler.go | grep -q "strings.Cut"'
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# SECTION 4: CONFIGURATION VALIDATION
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
print_section "Mobile-Resilient Configuration"
|
|
||||||
|
|
||||||
check_feature "Universal Binding" "Server binds to all interfaces (0.0.0.0)" \
|
|
||||||
'grep -q "bind_ip.*0.0.0.0" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
check_feature "Network Events" "Network event monitoring enabled" \
|
|
||||||
'grep -q "networkevents.*true" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
check_feature "Extended Timeouts" "Mobile-optimized timeout configuration" \
|
|
||||||
'grep -q "read_timeout.*600s" config-mobile-resilient.toml && grep -q "write_timeout.*600s" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
check_feature "Grace Period Config" "Extended grace periods in configuration" \
|
|
||||||
'grep -q "grace_period.*8h" config-mobile-resilient.toml || grep -q "mobile_grace_period.*12h" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
check_feature "Resumable Uploads" "Upload resumption enabled for network changes" \
|
|
||||||
'grep -q "resumable_uploads_enabled.*true" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
check_feature "IP Change Handling" "IP change allowance configured" \
|
|
||||||
'grep -q "allow_ip_changes.*true" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
check_feature "Enhanced Logging" "Network debugging enabled" \
|
|
||||||
'grep -q "log_network_events.*true" config-mobile-resilient.toml && grep -q "log_ip_changes.*true" config-mobile-resilient.toml'
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# SECTION 5: SERVER STARTUP AND HEALTH
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
print_section "Server Functionality"
|
|
||||||
|
|
||||||
print_info "Testing server startup and health check..."
|
|
||||||
|
|
||||||
# Start server for testing
|
|
||||||
timeout 10s ./hmac-file-server-network-fixed -config config-mobile-resilient.toml > /tmp/revalidation_test.log 2>&1 &
|
|
||||||
TEST_SERVER_PID=$!
|
|
||||||
sleep 3
|
|
||||||
|
|
||||||
if kill -0 $TEST_SERVER_PID 2>/dev/null; then
|
|
||||||
check_feature "Server Startup" "Server starts successfully" "true"
|
|
||||||
|
|
||||||
# Test health endpoint
|
|
||||||
if curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/health | grep -q "200"; then
|
|
||||||
check_feature "Health Endpoint" "Health check responds correctly" "true"
|
|
||||||
else
|
|
||||||
check_feature "Health Endpoint" "Health check responds correctly" "false"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Clean shutdown
|
|
||||||
kill $TEST_SERVER_PID 2>/dev/null
|
|
||||||
wait $TEST_SERVER_PID 2>/dev/null || true
|
|
||||||
else
|
|
||||||
check_feature "Server Startup" "Server starts successfully" "false"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for network resilience initialization in logs
|
|
||||||
if grep -q "NetworkEvents.*true" /tmp/revalidation_test.log 2>/dev/null; then
|
|
||||||
check_feature "Network Events Init" "Network monitoring initialized" "true"
|
|
||||||
else
|
|
||||||
check_feature "Network Events Init" "Network monitoring initialized" "false"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# SECTION 6: CRITICAL FEATURE VERIFICATION
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
print_section "Critical Network Resilience Features"
|
|
||||||
|
|
||||||
# Verify critical code patterns
|
|
||||||
if grep -A20 "ULTRA-FLEXIBLE GRACE PERIODS" cmd/server/main.go | grep -q "86400.*24 hours"; then
|
|
||||||
print_critical "24-hour grace period for network switching ✓"
|
|
||||||
((PASSED_CHECKS++))
|
|
||||||
else
|
|
||||||
print_critical "24-hour grace period for network switching ✗"
|
|
||||||
fi
|
|
||||||
((TOTAL_CHECKS++))
|
|
||||||
|
|
||||||
if grep -A30 "isMobileXMPP" cmd/server/main.go | grep -q "43200.*12 hours"; then
|
|
||||||
print_critical "12-hour extended grace for mobile XMPP clients ✓"
|
|
||||||
((PASSED_CHECKS++))
|
|
||||||
else
|
|
||||||
print_critical "12-hour extended grace for mobile XMPP clients ✗"
|
|
||||||
fi
|
|
||||||
((TOTAL_CHECKS++))
|
|
||||||
|
|
||||||
if grep -A50 "ENHANCED HMAC VALIDATION" cmd/server/main.go | grep -q "network_resilient"; then
|
|
||||||
print_critical "Network-resilient payload format support ✓"
|
|
||||||
((PASSED_CHECKS++))
|
|
||||||
else
|
|
||||||
print_critical "Network-resilient payload format support ✗"
|
|
||||||
fi
|
|
||||||
((TOTAL_CHECKS++))
|
|
||||||
|
|
||||||
if grep -A10 "X-Forwarded-For\|X-Real-IP" cmd/server/chunked_upload_handler.go | grep -q "strings.Split\|strings.TrimSpace"; then
|
|
||||||
print_critical "WiFi ↔ LTE IP change detection ✓"
|
|
||||||
((PASSED_CHECKS++))
|
|
||||||
else
|
|
||||||
print_critical "WiFi ↔ LTE IP change detection ✗"
|
|
||||||
fi
|
|
||||||
((TOTAL_CHECKS++))
|
|
||||||
|
|
||||||
# ========================================
|
|
||||||
# FINAL VALIDATION RESULTS
|
|
||||||
# ========================================
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
print_header "🎯 REVALIDATION RESULTS"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${CYAN}📊 VALIDATION SUMMARY:${NC}"
|
|
||||||
echo -e " Total checks performed: ${TOTAL_CHECKS}"
|
|
||||||
echo -e " Checks passed: ${PASSED_CHECKS}"
|
|
||||||
echo -e " Checks failed: $((TOTAL_CHECKS - PASSED_CHECKS))"
|
|
||||||
echo -e " Success rate: $(( (PASSED_CHECKS * 100) / TOTAL_CHECKS ))%"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
if [ $PASSED_CHECKS -eq $TOTAL_CHECKS ]; then
|
|
||||||
echo -e "${GREEN}🎉 COMPLETE VALIDATION SUCCESS!${NC}"
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}✅ ALL NETWORK RESILIENCE FEATURES CONFIRMED:${NC}"
|
|
||||||
echo -e " • WiFi ↔ LTE switching without 404 errors"
|
|
||||||
echo -e " • Device standby authentication persistence (72h)"
|
|
||||||
echo -e " • Mobile XMPP client detection and optimization"
|
|
||||||
echo -e " • IP change detection via proxy headers"
|
|
||||||
echo -e " • Ultra-flexible Bearer token validation"
|
|
||||||
echo -e " • Multiple HMAC payload format support"
|
|
||||||
echo -e " • Network event monitoring and logging"
|
|
||||||
echo ""
|
|
||||||
echo -e "${PURPLE}🚀 YOUR PROBLEM IS 100% SOLVED!${NC}"
|
|
||||||
echo -e "${PURPLE}The enhanced HMAC File Server handles all mobile network scenarios.${NC}"
|
|
||||||
echo ""
|
|
||||||
echo -e "${CYAN}📱 DEPLOYMENT COMMAND:${NC}"
|
|
||||||
echo -e " ./hmac-file-server-network-fixed -config config-mobile-resilient.toml"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
elif [ $PASSED_CHECKS -gt $((TOTAL_CHECKS * 3 / 4)) ]; then
|
|
||||||
echo -e "${YELLOW}⚠️ MOSTLY SUCCESSFUL VALIDATION${NC}"
|
|
||||||
echo -e "Most features are working correctly. Minor issues detected."
|
|
||||||
echo -e "Success rate: $(( (PASSED_CHECKS * 100) / TOTAL_CHECKS ))% - Good enough for production use."
|
|
||||||
echo ""
|
|
||||||
echo -e "${GREEN}Core network resilience features are functional.${NC}"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo -e "${RED}❌ VALIDATION ISSUES DETECTED${NC}"
|
|
||||||
echo -e "Significant problems found. Review failed checks above."
|
|
||||||
echo -e "Success rate: $(( (PASSED_CHECKS * 100) / TOTAL_CHECKS ))% - Needs attention."
|
|
||||||
echo ""
|
|
||||||
echo -e "${RED}Network resilience may not work as expected.${NC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -f /tmp/revalidation_test.log
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
print_header "REVALIDATION COMPLETE"
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Enhanced Security Architecture: Re-authentication for Network Switching & Standby Recovery
|
|
||||||
# Analysis and Implementation Plan
|
|
||||||
|
|
||||||
echo "🔐 HMAC File Server 3.3.0 - Enhanced Security Analysis"
|
|
||||||
echo "======================================================"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Current Security Model Analysis:"
|
|
||||||
echo "• Session-based authentication with 72-hour persistence"
|
|
||||||
echo "• Token refresh mechanism (up to 10 refreshes)"
|
|
||||||
echo "• Network change detection and logging"
|
|
||||||
echo "• Standby recovery with 24-hour grace extension"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🔒 Security Enhancement Proposal:"
|
|
||||||
echo "=================================="
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "1. SMART RE-AUTHENTICATION TRIGGERS:"
|
|
||||||
echo " ✓ Network IP change detected (5G ↔ WiFi)"
|
|
||||||
echo " ✓ Device standby > 30 minutes"
|
|
||||||
echo " ✓ Multiple failed authentication attempts"
|
|
||||||
echo " ✓ Suspicious user agent changes"
|
|
||||||
echo " ✓ Geographic location changes (if available)"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "2. PROGRESSIVE SECURITY LEVELS:"
|
|
||||||
echo " • Level 1: Standard session refresh (current)"
|
|
||||||
echo " • Level 2: Challenge-response with existing secret"
|
|
||||||
echo " • Level 3: Full re-authentication required"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "3. IMPLEMENTATION STRATEGY:"
|
|
||||||
echo " • HTTP 401 Unauthorized with WWW-Authenticate header"
|
|
||||||
echo " • XEP-0363 compliant re-authentication flow"
|
|
||||||
echo " • Client-side automatic secret renewal"
|
|
||||||
echo " • Transparent user experience for trusted scenarios"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "4. SECURITY BENEFITS:"
|
|
||||||
echo " • Prevents token hijacking during network transitions"
|
|
||||||
echo " • Mitigates risks from device theft/loss"
|
|
||||||
echo " • Ensures fresh credentials after standby"
|
|
||||||
echo " • Maintains zero-configuration user experience"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🎯 RECOMMENDED IMPLEMENTATION:"
|
|
||||||
echo "• Network change: Challenge-response (Level 2)"
|
|
||||||
echo "• Standby > 30min: Full re-auth (Level 3)"
|
|
||||||
echo "• Same network: Standard refresh (Level 1)"
|
|
||||||
echo ""
|
|
||||||
echo "This balances security with usability for XMPP mobile clients!"
|
|
||||||
@ -1,178 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Test script for Large File Asynchronous Post-Processing Fix
|
|
||||||
|
|
||||||
echo "🚀 Testing Large File Asynchronous Post-Processing Fix"
|
|
||||||
echo "======================================================"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 PROBLEM BEING SOLVED:"
|
|
||||||
echo " - Issue: Large files (>1GB) cause client timeouts during server post-processing"
|
|
||||||
echo " - Cause: Synchronous deduplication + virus scanning blocks response"
|
|
||||||
echo " - Solution: Immediate response for large files, async post-processing"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🔧 IMPLEMENTATION DETAILS:"
|
|
||||||
echo " 1. Files >1GB get immediate 200 OK response after file write"
|
|
||||||
echo " 2. Deduplication runs in background goroutine"
|
|
||||||
echo " 3. Virus scanning runs in background goroutine"
|
|
||||||
echo " 4. Client doesn't wait for post-processing to complete"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "✅ TESTING ASYNC POST-PROCESSING:"
|
|
||||||
echo "================================="
|
|
||||||
|
|
||||||
# Test 1: Check if the new headers are present in small file uploads
|
|
||||||
echo ""
|
|
||||||
echo "1. Testing Small File Upload (should be synchronous):"
|
|
||||||
echo "-----------------------------------------------------"
|
|
||||||
SMALL_FILE_RESPONSE=$(curl -s -w "HTTPCODE:%{http_code}|SIZE:%{size_upload}|TIME:%{time_total}" \
|
|
||||||
-X POST "http://localhost:8080/" \
|
|
||||||
-H "Authorization: HMAC-SHA256 test" \
|
|
||||||
-F "file=@/bin/ls" \
|
|
||||||
-D -)
|
|
||||||
|
|
||||||
SMALL_HTTP_CODE=$(echo "$SMALL_FILE_RESPONSE" | grep -o "HTTPCODE:[0-9]*" | cut -d: -f2)
|
|
||||||
SMALL_UPLOAD_TIME=$(echo "$SMALL_FILE_RESPONSE" | grep -o "TIME:[0-9.]*" | cut -d: -f2)
|
|
||||||
|
|
||||||
if [ "$SMALL_HTTP_CODE" = "200" ]; then
|
|
||||||
echo "✅ Small file upload: SUCCESS (HTTP $SMALL_HTTP_CODE)"
|
|
||||||
echo " Upload time: ${SMALL_UPLOAD_TIME}s"
|
|
||||||
|
|
||||||
# Check if async processing headers are NOT present for small files
|
|
||||||
if echo "$SMALL_FILE_RESPONSE" | grep -q "X-Large-File-Processing"; then
|
|
||||||
echo "⚠️ Small file has large file headers (unexpected but harmless)"
|
|
||||||
else
|
|
||||||
echo "✅ Small file processed synchronously (no async headers)"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "❌ Small file upload failed: HTTP $SMALL_HTTP_CODE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test 2: Simulate large file upload behavior
|
|
||||||
echo ""
|
|
||||||
echo "2. Testing Large File Upload Simulation:"
|
|
||||||
echo "----------------------------------------"
|
|
||||||
echo "ℹ️ Note: Cannot easily test real 1GB+ file upload, but checking code path"
|
|
||||||
echo "ℹ️ Verifying server handles async processing headers correctly"
|
|
||||||
|
|
||||||
# Create a test file to check response headers
|
|
||||||
TEST_RESPONSE=$(curl -s -w "HTTPCODE:%{http_code}" \
|
|
||||||
-X POST "http://localhost:8080/" \
|
|
||||||
-H "Authorization: HMAC-SHA256 test" \
|
|
||||||
-H "Content-Type: multipart/form-data" \
|
|
||||||
-F "file=@/bin/bash" \
|
|
||||||
-D -)
|
|
||||||
|
|
||||||
TEST_HTTP_CODE=$(echo "$TEST_RESPONSE" | grep -o "HTTPCODE:[0-9]*" | cut -d: -f2)
|
|
||||||
|
|
||||||
if [ "$TEST_HTTP_CODE" = "200" ]; then
|
|
||||||
echo "✅ Test upload successful: HTTP $TEST_HTTP_CODE"
|
|
||||||
|
|
||||||
# Check if server provides session headers for upload tracking
|
|
||||||
if echo "$TEST_RESPONSE" | grep -q "X-Session-ID"; then
|
|
||||||
echo "✅ Session tracking active"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "$TEST_RESPONSE" | grep -q "X-Upload-Success"; then
|
|
||||||
echo "✅ Upload success headers present"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "❌ Test upload failed: HTTP $TEST_HTTP_CODE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "3. Checking Server Configuration for Large File Support:"
|
|
||||||
echo "-------------------------------------------------------"
|
|
||||||
|
|
||||||
# Check deduplication configuration
|
|
||||||
DEDUP_CONFIG=$(grep -E "deduplication.*enabled|DeduplicationEnabled" /opt/hmac-file-server/config.toml 2>/dev/null || echo "not found")
|
|
||||||
if echo "$DEDUP_CONFIG" | grep -q "true"; then
|
|
||||||
echo "✅ Deduplication enabled (will run async for large files)"
|
|
||||||
else
|
|
||||||
echo "ℹ️ Deduplication disabled or not configured"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check ClamAV configuration
|
|
||||||
CLAMAV_CONFIG=$(grep -E "clamav.*enabled|clamavenabled.*true" /opt/hmac-file-server/config.toml 2>/dev/null || echo "not found")
|
|
||||||
if echo "$CLAMAV_CONFIG" | grep -q "true"; then
|
|
||||||
echo "✅ ClamAV enabled (will run async for large files)"
|
|
||||||
else
|
|
||||||
echo "ℹ️ ClamAV disabled or not configured"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check timeout configuration
|
|
||||||
TIMEOUT_CONFIG=$(grep -E "readtimeout|writetimeout" /opt/hmac-file-server/config.toml 2>/dev/null || echo "not found")
|
|
||||||
if echo "$TIMEOUT_CONFIG" | grep -q "7200s"; then
|
|
||||||
echo "✅ Extended timeouts configured (7200s for large files)"
|
|
||||||
elif echo "$TIMEOUT_CONFIG" | grep -q "4800s"; then
|
|
||||||
echo "✅ Extended timeouts configured (4800s for large files)"
|
|
||||||
else
|
|
||||||
echo "⚠️ Standard timeouts - may need extension for very large files"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "4. Testing Server Responsiveness:"
|
|
||||||
echo "--------------------------------"
|
|
||||||
|
|
||||||
# Test rapid sequential uploads to ensure server doesn't block
|
|
||||||
echo "Testing rapid sequential uploads..."
|
|
||||||
START_TIME=$(date +%s.%N)
|
|
||||||
|
|
||||||
for i in {1..3}; do
|
|
||||||
RAPID_RESPONSE=$(curl -s -w "TIME:%{time_total}" \
|
|
||||||
-X POST "http://localhost:8080/" \
|
|
||||||
-H "Authorization: HMAC-SHA256 test" \
|
|
||||||
-F "file=@/bin/ls" \
|
|
||||||
-o /dev/null)
|
|
||||||
|
|
||||||
RAPID_TIME=$(echo "$RAPID_RESPONSE" | grep -o "TIME:[0-9.]*" | cut -d: -f2)
|
|
||||||
echo " Upload $i: ${RAPID_TIME}s"
|
|
||||||
done
|
|
||||||
|
|
||||||
END_TIME=$(date +%s.%N)
|
|
||||||
TOTAL_TIME=$(echo "$END_TIME - $START_TIME" | bc)
|
|
||||||
echo "✅ Total time for 3 uploads: ${TOTAL_TIME}s"
|
|
||||||
|
|
||||||
if (( $(echo "$TOTAL_TIME < 10" | bc -l) )); then
|
|
||||||
echo "✅ Server remains responsive (no blocking detected)"
|
|
||||||
else
|
|
||||||
echo "⚠️ Server response time higher than expected"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🎯 LARGE FILE ASYNC POST-PROCESSING SUMMARY:"
|
|
||||||
echo "============================================"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "✅ IMPLEMENTATION COMPLETED:"
|
|
||||||
echo " ✅ Files >1GB trigger immediate response"
|
|
||||||
echo " ✅ Deduplication runs asynchronously in background"
|
|
||||||
echo " ✅ Virus scanning runs asynchronously in background"
|
|
||||||
echo " ✅ Applied to all upload handlers (main, v3, legacy)"
|
|
||||||
echo " ✅ Client receives 200 OK before post-processing"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🔧 TECHNICAL DETAILS:"
|
|
||||||
echo " - Threshold: 1GB (1024*1024*1024 bytes)"
|
|
||||||
echo " - Response: Immediate HTTP 200/201 with upload metadata"
|
|
||||||
echo " - Processing: Background goroutine handles deduplication + scanning"
|
|
||||||
echo " - Headers: X-Large-File-Processing: async, X-Post-Processing: background"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🚀 RESULT:"
|
|
||||||
echo " Large file uploads (>1GB) now complete immediately for the client"
|
|
||||||
echo " Server continues post-processing in the background"
|
|
||||||
echo " No more client timeouts waiting for deduplication/scanning"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📝 NEXT STEPS:"
|
|
||||||
echo " 1. Deploy updated server"
|
|
||||||
echo " 2. Test with actual large files (>1GB)"
|
|
||||||
echo " 3. Monitor server logs for background processing completion"
|
|
||||||
echo " 4. Verify client no longer experiences upload timeouts"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🔍 MONITORING:"
|
|
||||||
echo " - Watch logs for: 'Large file detected', 'Background deduplication', 'Background virus scan'"
|
|
||||||
echo " - Check async processing completion in server logs"
|
|
||||||
echo " - Monitor server performance during large file uploads"
|
|
||||||
@ -1,161 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 📱 Quick HMAC File Server Network Test
|
|
||||||
# Tests network resilience without long-running server
|
|
||||||
# Date: August 26, 2025
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Colors
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
print_success() {
|
|
||||||
echo -e "${GREEN}✅ PASS:${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_info() {
|
|
||||||
echo -e "${BLUE}ℹ️ INFO:${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
echo -e "${BLUE}📱 HMAC FILE SERVER NETWORK RESILIENCE VERIFICATION${NC}"
|
|
||||||
echo "==========================================================="
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Test 1: Check server binary exists and works
|
|
||||||
print_info "Testing server binary..."
|
|
||||||
if [ -f "./hmac-file-server-network-fixed" ]; then
|
|
||||||
if ./hmac-file-server-network-fixed -version 2>/dev/null || ./hmac-file-server-network-fixed --help >/dev/null 2>&1; then
|
|
||||||
print_success "Server binary is functional"
|
|
||||||
else
|
|
||||||
print_success "Server binary exists (version test inconclusive)"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "❌ Server binary not found"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test 2: Check mobile-resilient configuration
|
|
||||||
print_info "Testing mobile-resilient configuration..."
|
|
||||||
if [ -f "config-mobile-resilient.toml" ]; then
|
|
||||||
# Check key network resilience settings
|
|
||||||
if grep -q "grace_period.*86400" config-mobile-resilient.toml && \
|
|
||||||
grep -q "mobile_grace_period.*43200" config-mobile-resilient.toml && \
|
|
||||||
grep -q "ultra_grace_period.*259200" config-mobile-resilient.toml; then
|
|
||||||
print_success "Mobile configuration has extended grace periods (24h/12h/72h)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "bind_ip.*0.0.0.0" config-mobile-resilient.toml; then
|
|
||||||
print_success "Server configured for all network interfaces (0.0.0.0)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "read_timeout.*300" config-mobile-resilient.toml && \
|
|
||||||
grep -q "write_timeout.*300" config-mobile-resilient.toml; then
|
|
||||||
print_success "Extended timeouts configured for mobile networks"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "network_events.*true" config-mobile-resilient.toml; then
|
|
||||||
print_success "Network event monitoring enabled"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "❌ Mobile configuration not found"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test 3: Verify Bearer token validation code exists
|
|
||||||
print_info "Analyzing Bearer token validation code..."
|
|
||||||
if grep -q "validateBearerToken" cmd/server/main.go; then
|
|
||||||
print_success "Bearer token validation function found"
|
|
||||||
|
|
||||||
# Check for grace period logic
|
|
||||||
if grep -A20 -B5 "validateBearerToken" cmd/server/main.go | grep -q "grace"; then
|
|
||||||
print_success "Grace period logic detected in validation"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for mobile client detection
|
|
||||||
if grep -A50 "validateBearerToken" cmd/server/main.go | grep -i -E "(conversations|dino|gajim|android|mobile)"; then
|
|
||||||
print_success "Mobile client detection found in Bearer validation"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for network resilience
|
|
||||||
if grep -A50 "validateBearerToken" cmd/server/main.go | grep -i "network"; then
|
|
||||||
print_success "Network resilience handling found"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test 4: Check IP detection logic
|
|
||||||
print_info "Checking client IP detection..."
|
|
||||||
if grep -q "getClientIP" cmd/server/chunked_upload_handler.go; then
|
|
||||||
print_success "Client IP detection function found"
|
|
||||||
|
|
||||||
# Check for proxy header support
|
|
||||||
if grep -A10 "getClientIP" cmd/server/chunked_upload_handler.go | grep -q "X-Forwarded-For"; then
|
|
||||||
print_success "X-Forwarded-For header support detected"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -A10 "getClientIP" cmd/server/chunked_upload_handler.go | grep -q "X-Real-IP"; then
|
|
||||||
print_success "X-Real-IP header support detected"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Test 5: Quick server startup test
|
|
||||||
print_info "Testing server startup..."
|
|
||||||
timeout 10s ./hmac-file-server-network-fixed -config config-mobile-resilient.toml >/tmp/startup_test.log 2>&1 &
|
|
||||||
SERVER_PID=$!
|
|
||||||
sleep 3
|
|
||||||
|
|
||||||
if kill -0 $SERVER_PID 2>/dev/null; then
|
|
||||||
print_success "Server starts up successfully"
|
|
||||||
kill $SERVER_PID 2>/dev/null || true
|
|
||||||
wait $SERVER_PID 2>/dev/null || true
|
|
||||||
elif grep -q "Server listening" /tmp/startup_test.log 2>/dev/null; then
|
|
||||||
print_success "Server reached listening state"
|
|
||||||
else
|
|
||||||
echo "⚠️ Server startup test inconclusive (may need more time)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check log for network features
|
|
||||||
if [ -f "/tmp/startup_test.log" ]; then
|
|
||||||
if grep -q "Network resilience system initialized" /tmp/startup_test.log; then
|
|
||||||
print_success "Network resilience system activated"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "Upload resilience system initialized" /tmp/startup_test.log; then
|
|
||||||
print_success "Upload resilience system activated"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if grep -q "Enhanced upload endpoints added" /tmp/startup_test.log; then
|
|
||||||
print_success "Enhanced upload endpoints available"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🎯 NETWORK RESILIENCE VERIFICATION COMPLETE!"
|
|
||||||
echo "============================================="
|
|
||||||
echo ""
|
|
||||||
echo "✅ CONFIRMED FEATURES:"
|
|
||||||
echo " • Extended grace periods for mobile clients (72 hours max)"
|
|
||||||
echo " • Network change detection via X-Forwarded-For/X-Real-IP"
|
|
||||||
echo " • Flexible server binding (0.0.0.0) for all interfaces"
|
|
||||||
echo " • Mobile client detection (Conversations, Dino, etc.)"
|
|
||||||
echo " • Extended timeouts for slow mobile networks"
|
|
||||||
echo " • Network event monitoring and resilience system"
|
|
||||||
echo " • Bearer token validation with ultra-flexible grace periods"
|
|
||||||
echo ""
|
|
||||||
echo "🚀 YOUR NETWORK SWITCHING PROBLEM IS SOLVED!"
|
|
||||||
echo ""
|
|
||||||
echo "📱 USAGE INSTRUCTIONS:"
|
|
||||||
echo "1. Use config-mobile-resilient.toml for mobile scenarios"
|
|
||||||
echo "2. Server automatically detects WiFi ↔ LTE switches"
|
|
||||||
echo "3. Authentication persists through network changes"
|
|
||||||
echo "4. Device standby is handled with 72-hour grace periods"
|
|
||||||
echo "5. All XMPP clients (Conversations, Dino, etc.) supported"
|
|
||||||
echo ""
|
|
||||||
echo "🔧 TO RUN THE SERVER:"
|
|
||||||
echo " ./hmac-file-server-network-fixed -config config-mobile-resilient.toml"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -f /tmp/startup_test.log
|
|
||||||
@ -1,68 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Version Update Verification Script
|
|
||||||
# Verifies all 3.2.x references have been updated to 3.3.0
|
|
||||||
|
|
||||||
echo "🔄 HMAC File Server Version Update Verification"
|
|
||||||
echo "==============================================="
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Checking Binary Version:"
|
|
||||||
if [ -f "./builds/hmac-file-server-linux-amd64" ]; then
|
|
||||||
./builds/hmac-file-server-linux-amd64 -version
|
|
||||||
else
|
|
||||||
echo "❌ Binary not found. Please run build first."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Checking Core Source Files:"
|
|
||||||
echo "• Main server version:"
|
|
||||||
grep -n "v3\." cmd/server/main.go | head -3
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "• Configuration version:"
|
|
||||||
grep -n 'version.*=' cmd/server/config_simplified.go | head -1
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Checking Configuration Files:"
|
|
||||||
echo "• Production enhanced config:"
|
|
||||||
grep -n 'version.*=' config-production-enhanced.toml
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "• Production validated config:"
|
|
||||||
grep -n 'version.*=' config-production-validated.toml
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Checking Documentation Files:"
|
|
||||||
echo "• README.md updates:"
|
|
||||||
grep -n "3\.3\.0\|v3\.3" README.md | head -2
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "• Test suite version:"
|
|
||||||
grep -n "3\.3\.0" tests/README.md | head -1
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Checking ejabberd Module:"
|
|
||||||
echo "• Installation guide:"
|
|
||||||
grep -n "3\.3\.0" ejabberd-module/INSTALLATION_GUIDE.md | head -2
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "• Technical report:"
|
|
||||||
grep -n "3\.3\.0" ejabberd-module/TECHNICAL_REPORT.md | head -2
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Checking Network Resilience Documentation:"
|
|
||||||
grep -n "3\.3\.0" NETWORK_RESILIENCE_COMPLETE.md | head -2
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📋 Verification Summary:"
|
|
||||||
echo "✅ All version references have been updated from 3.2.x to 3.3.0"
|
|
||||||
echo "✅ Binary compilation successful with new version"
|
|
||||||
echo "✅ Multi-architecture build script updated"
|
|
||||||
echo "✅ Configuration files updated"
|
|
||||||
echo "✅ Documentation updated"
|
|
||||||
echo "✅ ejabberd module updated"
|
|
||||||
echo "✅ Network resilience features marked as 3.3.0"
|
|
||||||
echo ""
|
|
||||||
echo "🎉 Version update completed successfully!"
|
|
||||||
echo "Ready to deploy HMAC File Server 3.3.0 'Nexus Infinitum' with network switching enhancements!"
|
|
||||||
Reference in New Issue
Block a user