123 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# HMAC File Server - Podman Production Configuration
 | 
						|
# This file is auto-generated by deploy-podman.sh
 | 
						|
# Edit as needed for your specific deployment requirements
 | 
						|
 | 
						|
[server]
 | 
						|
listen_address = "8888"
 | 
						|
storage_path = "/data"
 | 
						|
metrics_enabled = true
 | 
						|
metrics_port = "9090"
 | 
						|
max_upload_size = "10GB"
 | 
						|
max_header_bytes = 1048576
 | 
						|
cleanup_interval = "24h"
 | 
						|
max_file_age = "720h"
 | 
						|
enable_dynamic_workers = true
 | 
						|
worker_scale_up_thresh = 40
 | 
						|
worker_scale_down_thresh = 10
 | 
						|
deduplication_enabled = true
 | 
						|
min_free_bytes = "1GB"
 | 
						|
file_naming = "original"
 | 
						|
networkevents = true                # Enable network change detection
 | 
						|
 | 
						|
# Network resilience settings
 | 
						|
graceful_shutdown_timeout = "300s"
 | 
						|
connection_drain_timeout = "120s"
 | 
						|
max_idle_conns_per_host = 5
 | 
						|
idle_conn_timeout = "90s"
 | 
						|
disable_keep_alives = false
 | 
						|
client_timeout = "300s"
 | 
						|
restart_grace_period = "60s"
 | 
						|
 | 
						|
[uploads]
 | 
						|
# XMPP-compatible file extensions for maximum client support
 | 
						|
allowed_extensions = [".zip", ".rar", ".7z", ".tar.gz", ".tgz", ".gpg", ".enc", ".pgp", ".txt", ".pdf", ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".svg", ".webp", ".wav", ".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".mpeg", ".mpg", ".m4v", ".3gp", ".3g2", ".mp3", ".ogg", ".doc", ".docx"]
 | 
						|
chunked_uploads_enabled = true
 | 
						|
chunk_size = "32MB"
 | 
						|
resumable_uploads_enabled = true
 | 
						|
max_resumable_age = "48h"
 | 
						|
sessiontimeout = "60m"
 | 
						|
maxretries = 3
 | 
						|
 | 
						|
# Upload resilience settings
 | 
						|
session_persistence = true
 | 
						|
session_recovery_timeout = "300s"
 | 
						|
client_reconnect_window = "120s"
 | 
						|
upload_slot_ttl = "3600s"
 | 
						|
retry_failed_uploads = true
 | 
						|
max_upload_retries = 3
 | 
						|
 | 
						|
# Enhanced Network Resilience (NEW)
 | 
						|
[network_resilience]
 | 
						|
enabled = true
 | 
						|
fast_detection = true               # 1-second network change detection
 | 
						|
quality_monitoring = true           # Monitor RTT and packet loss
 | 
						|
predictive_switching = true         # Proactive network switching
 | 
						|
mobile_optimizations = true        # Mobile-friendly thresholds
 | 
						|
upload_resilience = true            # Resume uploads across network changes
 | 
						|
detection_interval = "1s"
 | 
						|
quality_check_interval = "5s"
 | 
						|
network_change_threshold = 3        # Switches required to trigger network change
 | 
						|
interface_stability_time = "10s"    # Mobile-appropriate stability time
 | 
						|
upload_pause_timeout = "10m"       # Mobile-friendly upload pause timeout
 | 
						|
upload_retry_timeout = "20m"       # Extended retry for mobile scenarios
 | 
						|
rtt_warning_threshold = "500ms"     # Cellular network warning threshold
 | 
						|
rtt_critical_threshold = "2000ms"   # Cellular network critical threshold
 | 
						|
packet_loss_warning_threshold = 5.0 # 5% packet loss warning
 | 
						|
packet_loss_critical_threshold = 15.0 # 15% packet loss critical
 | 
						|
 | 
						|
[downloads]
 | 
						|
resumable_downloads_enabled = true
 | 
						|
chunked_downloads_enabled = true
 | 
						|
chunk_size = "32MB"
 | 
						|
# Same extensions as uploads for consistency
 | 
						|
allowed_extensions = [".zip", ".rar", ".7z", ".tar.gz", ".tgz", ".gpg", ".enc", ".pgp", ".txt", ".pdf", ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".svg", ".webp", ".wav", ".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".mpeg", ".mpg", ".m4v", ".3gp", ".3g2", ".mp3", ".ogg", ".doc", ".docx"]
 | 
						|
 | 
						|
[security]
 | 
						|
# IMPORTANT: Change these secrets in production!
 | 
						|
secret = "CHANGE-THIS-PRODUCTION-SECRET-HMAC-KEY"
 | 
						|
enablejwt = true
 | 
						|
jwtsecret = "CHANGE-THIS-JWT-SECRET-KEY"
 | 
						|
jwtalgorithm = "HS256"
 | 
						|
jwtexpiration = "24h"
 | 
						|
 | 
						|
[logging]
 | 
						|
level = "info"
 | 
						|
file = "/logs/hmac-file-server.log"
 | 
						|
max_size = 100
 | 
						|
max_backups = 7
 | 
						|
max_age = 30
 | 
						|
compress = true
 | 
						|
 | 
						|
[deduplication]
 | 
						|
enabled = true
 | 
						|
directory = "/deduplication"
 | 
						|
 | 
						|
[workers]
 | 
						|
numworkers = 4
 | 
						|
uploadqueuesize = 100
 | 
						|
 | 
						|
[timeouts]
 | 
						|
readtimeout = "3600s"
 | 
						|
writetimeout = "3600s"
 | 
						|
idletimeout = "3600s"
 | 
						|
shutdown = "30s"
 | 
						|
 | 
						|
[versioning]
 | 
						|
enableversioning = false
 | 
						|
backend = "simple"
 | 
						|
maxversions = 1
 | 
						|
 | 
						|
[redis]
 | 
						|
redisenabled = false
 | 
						|
redisdbindex = 0
 | 
						|
redisaddr = "localhost:6379"
 | 
						|
redispassword = ""
 | 
						|
redishealthcheckinterval = "120s"
 | 
						|
 | 
						|
[clamav]
 | 
						|
clamavenabled = false
 | 
						|
clamavsocket = "/var/run/clamav/clamd.ctl"
 | 
						|
numscanworkers = 2
 | 
						|
scanfileextensions = [".exe", ".dll", ".bin", ".com", ".bat", ".sh", ".php", ".js"]
 | 
						|
maxscansize = "200MB"
 |