Files
hmac-file-server/templates/config-adaptive.toml
Alexander Renz 3887feb12c Add enhanced configuration templates for adaptive I/O features
- Introduced a comprehensive configuration template (config-adaptive.toml) for adaptive I/O, enabling improved upload/download dual stack with various performance optimizations, security settings, and network resilience features.
- Created a test configuration template (test-config.toml) mirroring the adaptive configuration for testing purposes.
- Added a simple test configuration (test-simple-config.toml) for basic adaptive features testing with essential parameters.
- Included an empty Jupyter notebook (xep0363_analysis.ipynb) for future analysis related to XEP-0363.
2025-08-23 12:07:31 +00:00

261 lines
6.3 KiB
TOML

# Enhanced Configuration Template for Adaptive I/O
# This configuration enables the improved upload/download dual stack
[server]
listen_address = "0.0.0.0:8080"
storage_path = "/data/uploads"
metricsenabled = true
metrics_path = "/metrics"
max_upload_size = "10GB"
max_header_bytes = 1048576
deduplication_enabled = true
file_naming = "original"
networkevents = true
precaching = true
# Enhanced performance configuration
[performance]
# Adaptive buffer management
adaptive_buffers = true
min_buffer_size = "16KB"
max_buffer_size = "1MB"
buffer_optimization_interval = "30s"
initial_buffer_size = "64KB"
# Client profiling and optimization
client_profiling = true
profile_persistence_duration = "24h"
connection_type_detection = true
performance_history_samples = 100
# Memory management
max_memory_usage = "512MB"
gc_optimization = true
buffer_pool_preallocation = true
[uploads]
allowed_extensions = ["jpg", "jpeg", "png", "gif", "mp4", "mov", "avi", "pdf", "doc", "docx", "txt"]
chunked_uploads_enabled = true
chunk_size = "adaptive" # Can be "adaptive", "fixed:2MB", etc.
resumable_uploads_enabled = true
sessiontimeout = "1h"
maxretries = 3
# Adaptive chunking parameters
min_chunk_size = "256KB"
max_chunk_size = "10MB"
chunk_adaptation_algorithm = "predictive" # "fixed", "adaptive", "predictive"
# Upload optimization
concurrent_chunk_uploads = 3
upload_acceleration = true
network_aware_chunking = true
[downloads]
allowed_extensions = ["jpg", "jpeg", "png", "gif", "mp4", "mov", "avi", "pdf", "doc", "docx", "txt"]
chunked_downloads_enabled = true
chunk_size = "adaptive"
resumable_downloads_enabled = true
range_requests = true
# Download optimization
connection_multiplexing = false
bandwidth_estimation = true
quality_adaptation = true
progressive_download = true
# Cache control
cache_control_headers = true
etag_support = true
last_modified_support = true
[streaming]
# Advanced streaming features
adaptive_streaming = true
network_condition_monitoring = true
throughput_optimization = true
latency_optimization = true
# Resilience features
automatic_retry = true
exponential_backoff = true
circuit_breaker = true
max_retry_attempts = 5
retry_backoff_multiplier = 2.0
# Quality adaptation
quality_thresholds = [
{ name = "excellent", min_throughput = "10MB/s", max_latency = "50ms" },
{ name = "good", min_throughput = "1MB/s", max_latency = "200ms" },
{ name = "fair", min_throughput = "100KB/s", max_latency = "500ms" },
{ name = "poor", min_throughput = "10KB/s", max_latency = "2s" }
]
[security]
secret = "your-hmac-secret-key-here"
enablejwt = false
jwtsecret = "your-jwt-secret-here"
jwtalgorithm = "HS256"
jwtexpiration = "24h"
[logging]
level = "info"
file = "/var/log/hmac-file-server.log"
max_size = 100
max_backups = 3
max_age = 28
compress = true
[network_resilience]
# Enhanced network resilience with multi-interface support
enabled = true
fast_detection = true
quality_monitoring = true
predictive_switching = true
mobile_optimizations = true
# Multi-interface configuration
multi_interface_enabled = true
interface_priority = ["eth0", "wlan0", "wwan0", "ppp0"]
auto_switch_enabled = true
switch_threshold_latency = "500ms"
switch_threshold_packet_loss = 5.0
quality_degradation_threshold = 0.3
max_switch_attempts = 3
switch_detection_interval = "2s"
# Timing configuration
detection_interval = "1s"
quality_check_interval = "5s"
max_detection_interval = "10s"
# Thresholds
rtt_warning_threshold = "200ms"
rtt_critical_threshold = "1s"
packet_loss_warning = 2.0
packet_loss_critical = 10.0
stability_minimum = 0.8
# Mobile-specific optimizations
mobile_buffer_size = "32KB"
mobile_chunk_size = "512KB"
mobile_retry_multiplier = 1.5
mobile_timeout_multiplier = 2.0
# Interface-specific optimization settings
[network_interfaces]
ethernet = { buffer_size = "1MB", chunk_size = "10MB", timeout_multiplier = 1.0, priority = 10 }
wifi = { buffer_size = "512KB", chunk_size = "5MB", timeout_multiplier = 1.2, priority = 20 }
lte = { buffer_size = "256KB", chunk_size = "2MB", timeout_multiplier = 2.0, priority = 30 }
cellular = { buffer_size = "128KB", chunk_size = "512KB", timeout_multiplier = 3.0, priority = 40 }
vpn = { buffer_size = "256KB", chunk_size = "2MB", timeout_multiplier = 1.5, priority = 50 }
# Handoff and switching behavior
[handoff]
seamless_switching = true
chunk_retry_on_switch = true
pause_transfers_on_switch = false
switch_notification_enabled = true
interface_quality_history = 50
performance_comparison_window = "5m"
[client_optimization]
# Per-client optimization
enabled = true
learning_enabled = true
adaptation_speed = "medium" # "slow", "medium", "fast"
# Client type detection
user_agent_analysis = true
connection_fingerprinting = true
performance_classification = true
# Optimization strategies
strategy_mobile = {
buffer_size = "32KB",
chunk_size = "512KB",
retry_multiplier = 1.5,
timeout_multiplier = 2.0
}
strategy_desktop = {
buffer_size = "128KB",
chunk_size = "2MB",
retry_multiplier = 1.0,
timeout_multiplier = 1.0
}
strategy_server = {
buffer_size = "512KB",
chunk_size = "10MB",
retry_multiplier = 0.5,
timeout_multiplier = 0.5
}
[monitoring]
# Enhanced monitoring and metrics
detailed_metrics = true
performance_tracking = true
client_analytics = true
# Metric collection intervals
realtime_interval = "1s"
aggregate_interval = "1m"
summary_interval = "1h"
# Storage for metrics
metrics_retention = "7d"
performance_history = "24h"
client_profile_retention = "30d"
[experimental]
# Experimental features
http3_support = false
quic_protocol = false
compression_negotiation = true
adaptive_compression = true
# Advanced I/O
io_uring_support = false # Linux only
zero_copy_optimization = true
memory_mapped_files = false
# Machine learning optimizations
ml_optimization = false
predictive_caching = false
intelligent_prefetching = false
[timeouts]
readtimeout = "30s"
writetimeout = "30s"
idletimeout = "60s"
shutdown = "30s"
# Adaptive timeouts
adaptive_timeouts = true
min_timeout = "5s"
max_timeout = "300s"
timeout_adaptation_factor = 1.2
[deduplication]
enabled = true
directory = "/data/deduplication"
maxsize = "1GB"
algorithm = "sha256"
cleanup_interval = "1h"
[iso]
enabled = false
mountpoint = "/mnt/iso"
size = "1GB"
charset = "utf8"
[versioning]
enableversioning = false
backend = "filesystem"
maxversions = 10
[clamav]
clamavenabled = false
clamavsocket = "/var/run/clamav/clamd.ctl"