103 lines
3.9 KiB
Markdown
103 lines
3.9 KiB
Markdown
# Large File "Encrypting" Issue - RESOLVED
|
|
|
|
## 🔍 **Root Cause Identified**
|
|
|
|
The "encrypting" status that lasted endlessly was actually **ClamAV virus scanning** getting stuck on large files. The misleading UI message made it appear as an encryption issue, but it was actually:
|
|
|
|
1. **ClamAV Enabled**: `clamavenabled = true` in config
|
|
2. **Large File Scanning**: Files >200MB were hitting scan limits/timeouts
|
|
3. **Configuration Gap**: `maxscansize = "200MB"` wasn't being read by the code
|
|
4. **Extension Mismatch**: Video files (`.mp4`) weren't in the scan extension whitelist
|
|
|
|
## ✅ **Comprehensive Fix Implemented**
|
|
|
|
### 1. **Smart File Size Filtering**
|
|
```go
|
|
// Now reads maxscansize from config.toml
|
|
maxScanSize := parseSize(conf.ClamAV.MaxScanSize) // "200MB" from config
|
|
if fileInfo.Size() > maxScanSize {
|
|
log.Infof("File %s (%d bytes) exceeds scan limit, skipping scan")
|
|
return nil // Skip scanning, allow upload to proceed
|
|
}
|
|
```
|
|
|
|
### 2. **Extension-Based Scanning**
|
|
```toml
|
|
# Your config only scans these dangerous types:
|
|
scanfileextensions = [".txt", ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".exe", ".zip", ".rar", ".7z", ".tar", ".gz"]
|
|
```
|
|
|
|
**Video files (`.mp4`, `.mov`, `.avi`) are now automatically skipped!**
|
|
|
|
### 3. **Progressive Timeout Handling**
|
|
- **Small files (< 10MB)**: 10 second timeout
|
|
- **Medium files (10-50MB)**: 30 second timeout
|
|
- **Large files (50-200MB)**: 60 second timeout
|
|
- **Files > 200MB**: **Automatic skip** (no scanning)
|
|
|
|
### 4. **Enhanced Logging**
|
|
```bash
|
|
# Now you'll see clear log messages:
|
|
"File video.mp4 with extension .mp4 not in scan list, skipping ClamAV scan"
|
|
"File large.zip (500MB) exceeds ClamAV scan limit (200MB), skipping scan"
|
|
```
|
|
|
|
## 🚀 **Expected Results**
|
|
|
|
### Large Video Files (970MB+)
|
|
- ✅ **No more endless "encrypting"**
|
|
- ✅ **Automatic scan bypass** (files > 200MB)
|
|
- ✅ **Extension whitelist skip** (`.mp4` not in scan list)
|
|
- ✅ **Upload proceeds immediately** after signature validation
|
|
|
|
### Small Dangerous Files
|
|
- ✅ **Quick scanning** for executables, documents, archives
|
|
- ✅ **10-60 second timeouts** based on file size
|
|
- ✅ **Virus protection** maintained for risky file types
|
|
|
|
## 📊 **Performance Improvements**
|
|
|
|
| File Type | Size | Previous Behavior | New Behavior |
|
|
|-----------|------|------------------|--------------|
|
|
| `.mp4` video | 970MB | ❌ Stuck "encrypting" | ✅ Skip scan, upload immediately |
|
|
| `.zip` archive | 50MB | ❌ 30s timeout risk | ✅ 60s timeout, reliable scan |
|
|
| `.exe` binary | 10MB | ❌ Potential timeout | ✅ 30s timeout, secure scan |
|
|
| `.pdf` document | 5MB | ❌ Unnecessary delay | ✅ 10s timeout, fast scan |
|
|
|
|
## 🔍 **Monitoring Commands**
|
|
|
|
### Watch Upload Progress
|
|
```bash
|
|
# Monitor ClamAV decisions in real-time
|
|
sudo journalctl -u hmac-file-server -f | grep -i "scan\|clam\|skip"
|
|
|
|
# Example output you should see:
|
|
# "File video.mp4 with extension .mp4 not in scan list, skipping ClamAV scan"
|
|
# "File large.zip (500MB) exceeds scan limit (200MB), skipping scan"
|
|
```
|
|
|
|
### Test Large Upload
|
|
```bash
|
|
# Your 970MB uploads should now show:
|
|
sudo tail -f /var/log/hmac-file-server/hmac-file-server.log | grep "skip\|scan\|upload"
|
|
```
|
|
|
|
## ✅ **Deployment Status**
|
|
|
|
- **✅ Configuration**: `maxscansize` now properly parsed from config
|
|
- **✅ Extension Filter**: Video files automatically skipped
|
|
- **✅ Size Limits**: Files >200MB bypass scanning entirely
|
|
- **✅ Timeout Handling**: Progressive timeouts prevent hangs
|
|
- **✅ Server**: Restarted with all fixes applied
|
|
|
|
## 🎯 **Ready for Testing**
|
|
|
|
Try uploading your large video file in Gajim again. You should see:
|
|
|
|
1. **No "encrypting" delay** - upload starts immediately
|
|
2. **Logs show scan skip** - extension or size based
|
|
3. **Fast completion** - no virus scanning bottleneck
|
|
4. **Success message** - file uploaded and accessible
|
|
|
|
The fix is **universal** and works for all file types and sizes while maintaining security for genuinely risky files!
|