🔥 Tremora del Terra: ultimate hmac-file-server fix – final push before the drop 💾🔐

This commit is contained in:
2025-07-18 18:14:23 +00:00
parent ae97d23084
commit 860761f72c
2 changed files with 21 additions and 298 deletions

View File

@ -1,298 +0,0 @@
# Build Guide - HMAC File Server with Network Resilience
## ✅ Quick Build (Working)
### 1. Standard Build with Network Resilience
```bash
# Build with all features (including network resilience)
./buildgo.sh
```
**Output:**
```
[BUILD] Building HMAC File Server v3.2 with Network Resilience...
[INFO] Found network resilience: upload_session.go
[INFO] Found network resilience: network_resilience.go
[INFO] Found network resilience: chunked_upload_handler.go
[INFO] Found network resilience: integration.go
[BUILD] Build successful! Binary created: ./hmac-file-server
[INFO] Binary size: 16M
```
### 2. Manual Build (Alternative)
```bash
# Build manually with all network resilience features
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 \
cmd/server/upload_session.go \
cmd/server/network_resilience.go \
cmd/server/chunked_upload_handler.go \
cmd/server/integration.go
```
## Build Requirements
### Prerequisites
- **Go 1.24+** (as specified in go.mod)
- **OpenSSL** (optional, for HMAC testing)
- **Redis** (optional, for session persistence)
### Dependencies
All dependencies are handled by Go modules:
```bash
# Download dependencies
go mod download
# Verify dependencies
go mod verify
# View dependency tree
go mod graph
```
## Build Options
### Development Build
```bash
# Build with debug information
go build -gcflags="all=-N -l" -o hmac-file-server-debug cmd/server/*.go
# Or use the build script in debug mode
DEBUG=1 ./buildgo.sh
```
### Production Build
```bash
# Optimized production build
go build -ldflags="-s -w" -o hmac-file-server cmd/server/*.go
# With version information
VERSION="3.2.1"
go build -ldflags="-s -w -X main.version=$VERSION" -o hmac-file-server cmd/server/*.go
```
### Cross-Platform Build
```bash
# Linux AMD64
GOOS=linux GOARCH=amd64 go build -o hmac-file-server-linux-amd64 cmd/server/*.go
# Linux ARM64 (for ARM servers/Raspberry Pi)
GOOS=linux GOARCH=arm64 go build -o hmac-file-server-linux-arm64 cmd/server/*.go
# Windows
GOOS=windows GOARCH=amd64 go build -o hmac-file-server.exe cmd/server/*.go
# macOS
GOOS=darwin GOARCH=amd64 go build -o hmac-file-server-macos cmd/server/*.go
```
## Configuration for Build
### Enable Network Resilience Features
Create or update your `config.toml`:
```toml
[server]
listen_address = ":8080"
enable_dynamic_workers = true # Enable dynamic scaling
worker_scale_up_thresh = 50 # Scale up threshold
worker_scale_down_thresh = 10 # Scale down threshold
deduplication_enabled = true # Enable deduplication
max_upload_size = "10GB" # Support large files
[uploads]
chunked_uploads_enabled = true # Enable chunked uploads
resumable_uploads_enabled = true # Enable resumable uploads
chunk_size = "10MB" # Optimal chunk size
max_resumable_age = "48h" # Session persistence
[timeouts]
readtimeout = "4800s" # 80 minutes for large files
writetimeout = "4800s" # 80 minutes for large files
idletimeout = "4800s" # 80 minutes for large files
[deduplication]
enabled = true
maxsize = "1GB" # Deduplicate files under 1GB
[security]
secret = "your-super-secret-hmac-key-minimum-64-characters-recommended"
```
## Testing the Build
### 1. Basic Functionality Test
```bash
# Test binary works
./hmac-file-server --help
# Test with config file
./hmac-file-server --config config.toml
```
### 2. Test Network Resilience Features
```bash
# Start server with chunked uploads enabled
./hmac-file-server --config config.toml
# In another terminal, test chunked upload endpoint
curl -X POST \
-H "X-Filename: test.txt" \
-H "X-Total-Size: 1024" \
-H "X-Signature: $(echo -n '/upload/chunked' | openssl dgst -sha256 -hmac 'your-secret' | cut -d' ' -f2)" \
http://localhost:8080/upload/chunked
```
### 3. Run Go Tests
```bash
# Run existing tests
go test ./test/...
# Run with verbose output
go test -v ./test/...
# Run specific tests
go test -run TestUpload ./test/
```
## Docker Build (Alternative)
### Using Existing Docker Setup
```bash
# Build Docker image
./builddocker.sh
# Or manually
docker build -t hmac-file-server .
```
### Run with Docker
```bash
# Start with docker-compose
cd dockerenv
docker-compose up -d
# Or run directly
docker run -d \
-p 8080:8080 \
-p 9090:9090 \
-v $(pwd)/config:/etc/hmac-file-server \
-v $(pwd)/data:/var/lib/hmac-file-server \
hmac-file-server
```
## Troubleshooting
### Build Issues
#### Missing Dependencies
```bash
# Clean module cache and re-download
go clean -modcache
go mod download
```
#### Go Version Issues
```bash
# Check Go version
go version
# Update Go if needed (Ubuntu/Debian)
sudo snap install go --classic
# Or download from https://golang.org/dl/
```
#### Network Resilience Files Missing
```bash
# Check if files exist
ls -la cmd/server/upload_session.go
ls -la cmd/server/network_resilience.go
ls -la cmd/server/chunked_upload_handler.go
ls -la cmd/server/integration.go
# If missing, the build will work but without network resilience features
# Core functionality remains unchanged
```
### Runtime Issues
#### Port Already in Use
```bash
# Check what's using port 8080
sudo netstat -tlnp | grep :8080
# Kill process if needed
sudo kill $(sudo lsof -t -i:8080)
```
#### Permission Issues
```bash
# Make binary executable
chmod +x hmac-file-server
# For system service installation
sudo chown root:root hmac-file-server
sudo chmod 755 hmac-file-server
```
#### Config File Issues
```bash
# Validate config syntax
./hmac-file-server --config config.toml --validate
# Use example config as starting point
cp config-example-xmpp.toml config.toml
```
## Build Performance
### Faster Builds
```bash
# Use build cache
export GOCACHE=$(go env GOCACHE)
# Parallel builds
go build -p 4 cmd/server/*.go
# Skip tests during development
go build -a cmd/server/*.go
```
### Smaller Binaries
```bash
# Strip debug info and symbol table
go build -ldflags="-s -w" cmd/server/*.go
# Use UPX compression (if installed)
upx --best hmac-file-server
```
## Deployment
### System Service
```bash
# Copy binary to system location
sudo cp hmac-file-server /usr/local/bin/
# Create systemd service
sudo cp hmac-file-server.service /etc/systemd/system/
sudo systemctl enable hmac-file-server
sudo systemctl start hmac-file-server
```
### Reverse Proxy Setup
```bash
# Nginx configuration
sudo cp nginx-hmac-file-server.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/hmac-file-server.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
```
This build process ensures that:
-**Backward Compatibility**: Works with or without network resilience files
-**Feature Detection**: Automatically includes available network resilience features
-**Zero Downtime**: Existing deployments continue working unchanged
-**Mobile Optimized**: New features specifically address network switching issues

21
LICENSE_NEW Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Alexander Renz
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.